Бот Получаване на данни за канала

Екип, разработих бот, използвайки SDK4 за бот рамка. Използвам Directline канал за комуникация с моя бот. Изискването ми се основава на данни за канала в съобщението „requestWelcomeDialog“, което трябва да покажа приветстващо съобщение.

Код от моя бот клиент:

BotChat.App({
    botConnection: botConnection,
    user: userOption,
    bot: { id: model.botId, name: model.botName },
    resize: 'window',
    speechOptions: speechOptions,
    locale: 'en',
    sendTypingIndicator: true,
}, document.getElementById('BotChatElement'));
PostBotConfiguration();
botConnection
    .postActivity({
        from: user,
        name: 'requestWelcomeDialog',
        type: 'event',
        value: { 'BotType': 'abcd' }
    })
    .subscribe(function (id) {
        setWCScreenChatPosition();
        model.botRender = true;
        console.log('"trigger requestWelcomeDialog" sent');
    });

В горния код изпращам BotType като „abcd“. Опитвам се да прочета тази стойност от моя бот.

Моят код в бота.

protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
    Utility util = new Utility();
    try
    {
        foreach (var member in membersAdded)
        {
            if (member.Id != turnContext.Activity.Recipient.Id)
            {
                BotChannelData cdata = new BotChannelData();
                turnContext.Activity.TryGetChannelData(out cdata);
            }
        }
    }
    catch
    {
    }
}

В това винаги получавам изключение за нулева препратка.

Мога ли да знам какво пропускам в това?


person Sriram Tamilarasan    schedule 07.02.2020    source източник
comment
Все още ли работите върху това?   -  person Kyle Delaney    schedule 10.02.2020
comment
Да, Кайл, все още съм изправен пред същия проблем.:-(   -  person Sriram Tamilarasan    schedule 11.02.2020
comment
Прочете ли отговора ми?   -  person Kyle Delaney    schedule 11.02.2020
comment
Имате ли още нужда от помощ?   -  person Kyle Delaney    schedule 15.02.2020
comment
Благодаря за последващите действия. Ще ви актуализирам скоро.   -  person Sriram Tamilarasan    schedule 17.02.2020
comment
Бихте ли помислили да гласувате за и да приемете моя отговор?   -  person Kyle Delaney    schedule 18.02.2020


Отговори (2)


Първият проблем е, че използвате Bot Chat. Bot Chat е Web Chat v3 и е отхвърлен. Трябва да използвате уеб чат v4 съгласно инструкциите в репото.

Вторият проблем е, че се опитвате да отговорите на персонализирано събитие, като използвате OnMembersAddedAsync, което се задейства само от дейности за актуализиране на разговор. Можете да видите как да изпращате и отговаряте на приветстващи събития, като следвате инструкциите в този проблем и това образец. Еквивалентът на C# би изглеждал така:

if (turnContext.Activity.Name == "webchat/join")
{
    await turnContext.SendActivityAsync("Back Channel Welcome Message!");
}
person Kyle Delaney    schedule 07.02.2020

Ако използвате канал за директна линия, трябва да използвате уеб чат v4. Тъй като Web Chat v3 вече е отхвърлен. Можете да получите кода за поздравително съобщение за изпращане от тази официална проба.

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <title>Web Chat: Send welcome event</title>

    <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
    <style>
      html, body { height: 100% }
      body { margin: 0 }

      #webchat {
        height: 100%;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="webchat"></div>
    <script>
      (async function () {

        const res = await fetch('https://webchat-mockbot.azurewebsites.net/directline/token', { method: 'POST' });
        const { token } = await res.json();

       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: { language: window.navigator.language }
             }
           });
         }
         return next(action);
       });

        window.WebChat.renderWebChat({
          directLine: window.WebChat.createDirectLine({ token }),
        store
        }, document.getElementById('webchat'));

        document.querySelector('#webchat > *').focus();
      })().catch(err => console.error(err));
    </script>
  </body>
</html>
person chyonek    schedule 08.02.2020