Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I use offline-directline for Microsofts Botframework v4?

I need to run the microsoft botframework v4 on-premise since company internal restrictions forbid me to register the bot on Microsoft Azure or use the connector in the cloud. My idea is to use offline-directline to emulate the connector locally. To my knowledge, the package has been built for Microsoft Botframework V3 and not v4. Has anybody managed to use it for v4?

I followed through instructions however got stuck trying to implement the web chat client. Where and how do I implement

BotChat.App({
    directLine: {
        secret: params['s'],
        token: params['t'],
        domain: params['domain'],
        webSocket: false // defaults to true
    },

in the index.html file of directline v4? The documentation of "offline-directline" is only for Botframework v3.

Is there a sample repository where I could find some info from?

like image 862
MoritzB Avatar asked Apr 23 '19 13:04

MoritzB


1 Answers

Please refer to the instructions in the BotFramework-WebChat repo to see how to host Web Chat v4 in a website. You'll find something that looks like this:

<!DOCTYPE html>
<html>
  <body>
    <div id="webchat" role="main"></div>
    <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
    <script>
      window.WebChat.renderWebChat({
        directLine: window.WebChat.createDirectLine({ token: 'YOUR_DIRECT_LINE_TOKEN' }),
        userID: 'YOUR_USER_ID',
        username: 'Web Chat User',
        locale: 'en-US',
        botAvatarInitials: 'WC',
        userAvatarInitials: 'WW'
      }, document.getElementById('webchat'));
    </script>
  </body>
</html>

Rather than passing the same kind of object to window.WebChat.renderWebChat's directLine parameter as you would to BotChat.App's directLine parameter, you need to pass the object to window.WebChat.createDirectLine. The object in question is a DirectLineOptions object.

    window.WebChat.renderWebChat({
        directLine: window.WebChat.createDirectLine({
            secret: params['s'],
            token: params['t'],
            domain: params['domain'],
            webSocket: false // defaults to true
        }),

If you don't want to have to pass in any parameters to your Web Chat client, you can include them inline:

            secret: '',
            token: '',
            domain: 'http://localhost:3000/directline',
            webSocket: false // defaults to true

And if you're not particular about running Web Chat in your own HTML page, I recommend foregoing offline-directline and just using the Bot Emulator, which is great for interacting with local bots.

like image 111
Kyle Delaney Avatar answered Oct 17 '22 07:10

Kyle Delaney