自定义域中的直线活动 - 502 错误网关 - 节点 js/java 脚本 - 天蓝色聊天机器人

Directline activities in custom domain - 502 Bad gateway - node js/java script - azure chatbot

由于公司内部限制,我已经在我的自定义域 test.com 中部署了 Azure 应用程序服务。因此,当我在通过直线部署后尝试访问聊天机器人时,我看到 502 bad gateway error

customChatbot.html

<!DOCTYPE html>
<html>
   <body>
      <div id="webchat" role="main"></div>
      <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
      <script>
      
            const styleOptions = {
            bubbleBackground: '#E5E8E8',
            bubbleFromUserBackground: '#D9EDF9',
            hideUploadButton: true,
            sendBoxTextWrap: true
        };

        const store = window.WebChat.createStore({}, function (_ref) {
            var dispatch = _ref.dispatch;
            return function (next) {
                return function (action) {
                    if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
                            console.log("inside conversation history");
                            dispatch({
                                type: 'WEB_CHAT/SEND_EVENT',
                                payload: {
                                    name: 'conversationHistory',
                                    value: { id: 'me', name: 'XXX@test.com' },

                                }
                            });
                            }
                    return next(action);
                }

            }


        });

         window.WebChat.renderWebChat(
            {
               directLine: window.WebChat.createDirectLine({
                  token: 'XXXXXXXXXXXXXXXXXXXXXXXXX'
               }),
               userID: 'shivakumar.kandasamy@test.com',
               bot: { id: 'hpusstoredevbot' },
               username: 'Sivakumar Kandasamy',
               locale: 'en-US',
               botAvatarInitials: 'WC',
               userAvatarInitials: 'WW',
               store: store,
               styleOptions: styleOptions
            },
            document.getElementById('webchat')
         );
      </script>
   </body>
</html>

回应 { “错误”: { “代码”:“BotError”, “消息”:“发送失败 activity:机器人返回错误” } }

请求Header

我为此应用程序启用了 Azure AD,但我不确定如何将它与直线集成或它如何与直线一起工作。我知道直线需要 secret/token 但为了进入自定义域,它可能需要一些身份验证,但如何使用直线实现这一点?这是身份验证的问题吗?有人可以给我一些指示吗?我正在使用节点 js。

我在应用程序洞察中看到的异常

向 devbot 发送消息 POST 失败:发送请求时发生错误。发送请求时出错。无法解析远程名称:'devbot.corp.xxcloud.net' 异常类型:System.Net.WebException 失败的方法:System.Net.HttpWebRequest.EndGetRequestStream
自定义属性 对话 ID XXXXXXX-c
关联 ID |XXXXXXX
Activity 输入 conversationUpdate
机器人端点 https://devbot.corp.xxcloud.net/api/messages
收件人 ID devbot@NWGv3oCIAyXMXX
Activity ID JiR6p5WTnLOXXX
频道ID直线
来自 ID XXXXXXX-c
机器人 ID devbot
背景 |XXXXXXX

Microsoft.Bot.Schema.BotException:
   at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__36.MoveNext (Microsoft.Bot.Base.ChannelConnector, Version=3.2.3.11, Culture=neutral, PublicKeyToken=nullMicrosoft.Bot.Base.ChannelConnector, Version=3.2.3.11, Culture=neutral, PublicKeyToken=null: D:\a\s\ChannelSDK\Microsoft.Bot.Base.ChannelConnector\API\BotAPI.csMicrosoft.Bot.Base.ChannelConnector, Version=3.2.3.11, Culture=neutral, PublicKeyToken=null: 480)
Inner exception System.Net.Http.HttpRequestException handled at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__36.MoveNext:
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
   at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__36.MoveNext (Microsoft.Bot.Base.ChannelConnector, Version=3.2.3.11, Culture=neutral, PublicKeyToken=nullMicrosoft.Bot.Base.ChannelConnector, Version=3.2.3.11, Culture=neutral, PublicKeyToken=null: D:\a\s\ChannelSDK\Microsoft.Bot.Base.ChannelConnector\API\BotAPI.csMicrosoft.Bot.Base.ChannelConnector, Version=3.2.3.11, Culture=neutral, PublicKeyToken=null: 452)
Inner exception System.Net.WebException handled at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw:
   at System.Net.HttpWebRequest.EndGetRequestStream (System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback (System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)

按照官方文档,可以解决问题。

注意Authorization的格式。

问题是我们的 node js SDK。我们的 SDK 是 V3。根据微软团队的说法,只有当您的节点 js SDK 版本为 V4 或更高版本时,您才能在内部访问 ILB ASE 中的机器人(使用直接应用服务扩展)。这很奇怪,但它只发生在 node js 而不是 .NET 。 .NET sdk 仍然可以在内部使用 ILB ASE 访问服务,因为 sdk V3.They 尚未在其文档中发布。由于问题仅在于在我们的场所内部访问它所以我们使用带有 public dns

的应用程序网关访问机器人