0
votes

I am trying to run one of the botbuilders samples to check the opportunities of sending adaptive cards to several channels starting with webchat. The example can be found here: https://github.com/microsoft/BotBuilder-Samples/tree/master/samples/javascript_nodejs/07.using-adaptive-cards

I managed to establish the connection with framework emulator, but when changing to test it in the azure console with the webChat test it seems that webChat is not able to send messages.

As I am using SDK V4 I understood that I do not have to care at all for the SSL Connection, neither I have to care about an A-category certificate - it's all done by the SDK/Framework.

So my bot is running as restify-server under the http protocol, but the configuration of the botservice indicates that the service endpoint should support https. Do I need to have worries about this?

Here the sample code:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

const path = require('path');
const restify = require('restify');

// Import required bot services.
// See https://aka.ms/bot-services to learn more about the different parts of a bot.
const { BotFrameworkAdapter } = require('botbuilder');

const { AdaptiveCardsBot } = require('./bots/adaptiveCardsBot');

// Read botFilePath and botFileSecret from .env file.
const ENV_FILE = path.join(__dirname, '.env');
require('dotenv').config({ path: ENV_FILE });

// Create adapter. See https://aka.ms/about-bot-adapter to learn more about adapters.
const adapter = new BotFrameworkAdapter({
    appId: process.env.MicrosoftAppID,
    appPassword: process.env.MicrosoftAppPassword
});

// Catch-all for errors.
adapter.onTurnError = async (context, error) => {
    // This check writes out errors to console log .vs. app insights.
    // NOTE: In production environment, you should consider logging this to Azure
    //       application insights.
    console.error(`\n [onTurnError] unhandled error: ${ error }`);

    // Send a trace activity, which will be displayed in Bot Framework Emulator
    await context.sendTraceActivity(
        'OnTurnError Trace',
        `${ error }`,
        'https://www.botframework.com/schemas/error',
        'TurnError'
    );

    // Send a message to the user
    await context.sendActivity('The bot encountered an error or bug.');
    await context.sendActivity('To continue to run this bot, please fix the bot source code.');
};

// Create the AdaptiveCardsBot.
const bot = new AdaptiveCardsBot();

// Create HTTP server
const server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function() {
    console.log(`\n${ server.name } listening to ${ server.url }`);
    console.log('\nGet Bot Framework Emulator: https://aka.ms/botframework-emulator');
    console.log('\nTo talk to your bot, open the emulator select "Open Bot"');
});

// Listen for incoming requests.
server.post('/api/messages', (req, res) => {
    adapter.processActivity(req, res, async (context) => {
        await bot.run(context);
    });
});```



1

1 Answers

0
votes

This likely doesn't have anything to do with HTTP(S)/SSL. It sounds like a deployment issue. Here is some common deployment troubleshooting:

Common Deployment Issues

Recommended Steps

  • Test to see if "Test in Web Chat" works from Azure Portal > Your Resource Group > Your Bot > Test in Web Chat.
    • If it works, your deployment was successful and you need to troubleshoot why your client cannot connect to your deployed bot
    • If it doesn't work, please follow additional troubleshooting steps from this document
  • If you ran into errors while executing deployment CLI commands, ensure you have the latest version of Azure CLI
    • Some CLI commands will fail without much explanation. This is usually a formatting error. For your CLI commands, ensure that:
    • The entire command has appropriate spacing
    • User-provided strings are surrounded by quotes
    • User-provided strings for resource names are free of special characters (this mostly applies to App Service Plan names). See Naming rules and restrictions for specific details.
  • Ensure that you ran the az bot prepare-deploy step prior to deployment. Missing this step often manifests in a bot not starting or 404 errors (due to missing/incorrect web.config) when visiting https://<yourBot>.azurewebsites.net
  • Ensure that the file/folder structure of https://<yourBot>.scm.azurewebsites.net/dev/wwwroot/ looks similar to your local bot. For Node bots, it will look mostly the same as your local bot files. For C# bots, it will have a lot of Microsoft.*.dll files along with <yourBot>.dll. All deployed bots should have a web.config file
    • For Node bots, you also need to have node_modules and .env deployed. For C# bots, you need appsettings.json. If your bot is missing .env or appsettings.json you need to either upload it, or copy the appropriate keys and values in Azure Portal > Your Resource Group > Your App Service > Configuration
    • Expanding on the code deployment step: When deploying, zip the contents of your project folder and not the folder by itself. Your zip file should have the structure:
    • code.zip/[each project file and folder] and not code.zip/myBot/[each project file and folder]
  • Ensure that the MicrosoftAppId and MicrosoftAppPassword that you have in appsettings.json/.env/App Service Configuration matches the ones found in your App Registration
  • Ensure that your App Registration can be accessed by "Accounts in any organizational directory" by following these steps
  • Go to https://<yourBot>.scm.azurewebsites.net/dev/wwwroot/:output, click Run, and see if any errors present themselves in the Output window

Recommended Documents


Please follow the document and let me know how it goes. If this turns out not to be a deployment issue, I will adjust this answer.