Bot在Web客户端中启动时不欢迎用户加入

时间:2019-12-12 05:07:22

标签: c# botframework webclient direct-line-botframework

每当用户通过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);
                    }
                }


        }

2 个答案:

答案 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的说明。