0

Azure ボット サービスで websocket オプションを有効にする方法は? アプリ サービスのアプリケーション設定で使用できる Websocket オプションがありますが、ボット サービスにはありません。

サンプル テンプレートと追加された websocket を使用して nodejs ボットを実行しています。

"use strict";
var builder = require("botbuilder");
var botbuilder_azure = require("botbuilder-azure");
var path = require('path');
var useEmulator = (process.env.NODE_ENV == 'development');
var WebSocket = require('ws');
var wss = new WebSocket.Server({ port: process.env.PORT || 8080 });

var connector = useEmulator ? new builder.ChatConnector() : new botbuilder_azure.BotServiceConnector({
    appId: process.env['MicrosoftAppId'],
    appPassword: process.env['MicrosoftAppPassword'],
    stateEndpoint: process.env['BotStateEndpoint'],
    openIdMetadata: process.env['BotOpenIdMetadata']
});

var bot = new builder.UniversalBot(connector);
bot.localePath(path.join(__dirname, './locale'));

bot.dialog('/', function (session) {
    session.send('You said ' + session.message.text);
});

if (useEmulator) {
    var restify = require('restify');
    var server = restify.createServer();
    server.listen(3978, function() {
        console.log('test bot endpont at http://localhost:3978/api/messages');
    });
    server.post('/api/messages', connector.listen());    
} else {
    module.exports = { default: connector.listen() }
}

これはクライアント側のコードです

var ws = new WebSocket('ws://localhost:8080');
ws.onopen = function() {
   console.log('connected');
};
ws.onclose = function() {
   console.log('disconnected');
};
ws.send('test message from websocket client')

これはローカル エミュレーターでは完全に機能していますが、Azure サーバーに接続しようとすると 503 応答コードが返されます。

var ws = new WebSocket('ws://mybotname.azurewebsites.net');

また、ポート 8080 で試したところ、接続タイムアウト エラーが発生しました。

4

0 に答える 0