每当用户通过OnMember Leicester方法加入与我的机器人的对话时,我都会添加一条自定义消息,它在Bot Emulator上也能很好地工作,机器人会主动发送主动消息,问候用户姓名。
但是在Web客户端上,机器人会在用户首次键入时发送消息,然后发送问候消息,该消息会突然中断。
我的用于处理用户加入的会话的代码
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
await turnContext.SendActivityAsync(MessageFactory.Text($"Hi {firstName.ToLower()}, I am at your service."), cancellationToken);
}
}
}
答案 0 :(得分:0)
您可以尝试在客户端添加存储方法,并可以通过bot框架在oneventasync方法中发送问候消息。
以下代码正在起作用 :
在客户端站点上的存储方法:
const store = window.WebChat.createStore(
{},
({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value:{
"userName":name,
"eMail":mail
},
}
});
}
服务器端-Bot代码:
protected override async Task OnEventActivityAsync(ITurnContext<IEventActivity> turnContext, CancellationToken cancellationToken)
{
var objectdata = JsonConvert.DeserializeObject<dynamic>(turnContext.Activity.Value.ToString());
data _data = new data();
_data.username = objectdata["userName"];
_data.eMail= objectdata["eMail"];
if (turnContext.Activity.Name == "webchat/join")
{
await turnContext.SendActivityAsync(MessageFactory.Text($"Good Morning! \n\n **{_data.username}** \n {WelcomeText}"), cancellationToken);
}
}
答案 1 :(得分:-1)
请查看此工作示例以及有关如何从WebChat发送Welcome Message Event的说明。