我在Azure门户测试我的机器人(Bot频道注册/ BOT管理/网络聊天测试)。 第二个ConversationUpdate事件将在用户第一个输入的后面跟随,如下所示
但是模拟器工作正常,2个ConversationUpdate事件并等待用户输入。 botframework-emulator步骤如下,
我希望在第二次ConversationUpdate到来时向用户发送欢迎消息(包括用户名,如hi,rainmaker welcome ...)。 用户在azure网络聊天中输入后将发送欢迎消息。 我该如何解决这个问题?
感谢。
答案 0 :(得分:1)
这是一个常见的问题;是的,conversationUpdate
事件不会在模拟器和网络聊天之间以同样的方式抛出,这是非常令人不安的。
我想发送欢迎信息(包括用户名,喜欢你,雨衣 欢迎...)第二次ConversationUpdate即将到来的用户。该 用户在azure网页聊天中输入后会发送欢迎消息。我怎么能够 解决这个问题?
如果您需要在此用户开始讲话之前发送欢迎消息以及有关用户的某些信息,您可以使用网络聊天的backchannel
功能传递这些信息,然后收到消息并发送欢迎信息。
正面需要几行代码,因此无法用于Azure网络聊天测试人员。但它在网络聊天实施方面运作良好,请参见下面的示例。
旁注:如果您不需要有关该用户的信息,您仍然可以使用您收到的第一个conversationUpdate
。
示例代码:我做了一个关于它的演示,你可以在那里得到它:https://github.com/nrobert/Bot-Language-Demo
要点:
1。从前面发送的Backchannel消息 here
在示例中,我传递了locale
信息:
botConnectionSettings.postActivity({
type: 'event',
from: { id: 'userid' },
locale: chatLocale,
name: 'localeSelectionEvent',
value: chatLocale
}).subscribe(function (id) { console.log('event language "' + chatLocale + '" selection sent'); });
2。在机器人级别收到的消息,here
else if (activity.Type == ActivityTypes.Event && activity.ChannelId == "webchat")
{
var receivedEvent = activity.AsEventActivity();
if ("localeSelectionEvent".Equals(receivedEvent.Name, StringComparison.InvariantCultureIgnoreCase))
{
// Send your welcome message here, using the special information you would have put in the event message...
}
}