Search code examples
node.jsbotframeworkdirect-line-botframework

Botframework v4 Directline integration: Is there a way to get the conversation id generated from directline transfer to the Chatbot (nodejs code)


This might be very simple, but I cannot find any reference regarding this. I integrated the chat bot in the web app using direct line API; I’m using this API to generate conversation id:

POST: https://directline.botframework.com/v3/directline/conversations

I’m trying to get the generated conversation id from the above API (from web app code) to the chatbot code (NodeJS). Is there a way or any reference to do this?


Solution

  • I resolve it using Botframework Web Chat back channel, here's the link for reference: https://github.com/Microsoft/BotFramework-WebChat

    After I generated the conversation id using directline API: POST: https://directline.botframework.com/v3/directline/conversations

    I send data from the web app to the chatbot via backchannel.

    <div id="webchat"></div>
    <script>
      (async function () {
        // We are using a customized store to add hooks to connect event
        const store = window.WebChat.createStore({}, ({ dispatch }) => next => action => {
          if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
            // When we receive DIRECT_LINE/CONNECT_FULFILLED action, we will send an event activity using WEB_CHAT/SEND_EVENT
            dispatch({
              type: 'WEB_CHAT/SEND_EVENT',
              payload: {
                name: 'webchat/join',
                value: { conversation_id: conversationID }
              }
            });
          }
    
          return next(action);
        });
    
        window.WebChat.renderWebChat({
          directLine: window.WebChat.createDirectLine({ token }),
          store
        }, document.getElementById('webchat'));
    
        document.querySelector('#webchat > *').focus();
      })().catch(err => console.error(err));
    
      //Note: conversationID and token is generated in the backend code of the web app.
    </script>