我在 Azure 门户上测试我的机器人(机器人 channel 注册/机器人管理/网络聊天中的测试)。 第二个 ConversationUpdate 事件将在用户第一次输入之后发生,如下所示,
- 点击“重新开始”
- 机器人获取第一个 ConversationUpdate、memberAdd 机器人
- 用户输入文本
- 机器人获取用户输入文本
- 机器人获取第二个 ConversationUpdate,成员添加用户
但是模拟器工作正常,有 2 个 ConversationUpdate 事件并等待用户输入。 botframework-emulator 步骤如下,
- 点击“开始新对话”
- 机器人获取第一个 ConversationUpdate、memberAdd 机器人
- 机器人获取第二个 ConversationUpdate,成员添加用户
- 用户输入文本
- 机器人获取用户输入文本
我想在第二次 ConversationUpdate 到来时向用户发送欢迎消息(包括用户名,例如嗨,造雨者欢迎...)。 用户在 azure 网络聊天中输入后将发送欢迎消息。 我该如何解决这个问题?
谢谢。
最佳答案
这是这里发布的一个常见问题;是的,conversationUpdate
事件在模拟器和网络聊天之间没有以相同的方式抛出,这非常令人不安。
在网络聊天中向您的用户发送欢迎信息
I want send welcome message(include user's name, like hi, rainmaker welcome ...) to user when second ConversationUpdate was coming. The welcome message will send after user input in azure webchat. How can i fix this problem?
如果您需要在用户开始说话之前发送欢迎消息以及有关该用户的一些信息,您可以使用网络聊天的backchannel
功能来传递这些信息信息,然后捕获消息并发送您的欢迎消息。
前端需要几行代码,因此无法用于 Azure 网络聊天测试器。但它在网络聊天实现上运行良好,请参阅下面的示例。
旁注:如果您不需要有关用户的信息,您仍然可以使用您收到的第一个 conversationUpdate
。
示例
示例代码:我做了一个有关此的演示,您可以在那里获取它:https://github.com/nrobert/Bot-Language-Demo
要点:
1。前方发送的反向 channel 消息 here
在示例中,我传递了区域设置
信息:
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...
}
}
关于azure - 第二个 ConversationUpdate 事件将在用户第一次输入之后发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50363035/