【发布时间】:2017-03-08 14:37:55
【问题描述】:
这是在 C# 中,在 Skype 频道上:
是否可以从触发器开始与用户的对话?
情况: 在某个定时时刻,我想向所有注册用户显示一个对话框(从中我有一个恢复cookie) 所以我有一个天蓝色的功能来监控队列并触发我的机器人。在那个触发器上,我可以发送一条简单的消息,但我想在那一刻开始一个对话。
[BotAuthentication]
public class MessagesController: ApiController {
public async Task < HttpResponseMessage > Post([FromBody] Activity activity) {
if (activity != null) {
switch (activity.GetActivityType()) {
case ActivityTypes.Message:
//some stuff here, not important for now
break;
case ActivityTypes.Trigger:
//This does not work:
await Conversation.SendAsync(activity, () => new ExceptionHandlerDialog < object > (new BroodjesDialog(), true));
//But this does:
IEventActivity trigger = activity;
var message = JsonConvert.DeserializeObject < Message > (((JObject) trigger.Value).GetValue("Message").ToString());
await Resume((Activity) message.ResumptionCookie.GetMessage());
var messageactivity = (Activity) message.ResumptionCookie.GetMessage();
client = new ConnectorClient(new Uri(messageactivity.ServiceUrl));
var triggerReply = messageactivity.CreateReply();
triggerReply.Text = $ "Let's do some talking";
await client.Conversations.ReplyToActivityAsync(triggerReply);
break;
}
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
【问题讨论】:
-
C# 还是节点?您打算使用哪个频道?这不可能在所有频道上实现。请向我们展示您发送简单消息的触发器的代码。谢谢。
-
在原问题上添加了相关代码。
-
您可以发布您的 Azure Function 触发器的代码吗?
-
Azure 函数代码是在 Azure 上创建机器人时生成的标准代码。我只更改了 Direct Line Api Key 以触发不同的机器人。
标签: c# triggers dialog queue botframework