【问题标题】:Bot working on Emulator but not on Azure (InternalServerError)机器人在模拟器上工作,但在 Azure 上不工作(InternalServerError)
【发布时间】:2018-12-05 10:02:33
【问题描述】:

使用:

  • SDK 语言:C#
  • SDK 版本:4.1.5
  • 环境:本地主机、Azure
  • 频道:网络聊天

问题描述

在 Bot Framework Emulator V4 中测试机器人时,它确实按预期工作,如下图所示:

按照this 说明在 Azure 中部署后,机器人停止工作(既不发送也不接收消息)并在网络聊天频道部分收到此警报:

我发现了这些类似的问题:

https://github.com/Microsoft/BotFramework-Emulator/issues/296

https://github.com/Microsoft/BotBuilder/issues/3329

但在我的情况下,AppId 和 Password 都已定义,而其他解决方案根本不起作用。 我什至设法在 azure 平台上找到了错误代码,但我无法找到详细信息或错误的来源......

代码概览

public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
    {
        bool reintentar = false;
        //tried this but didn't work
        //MicrosoftAppCredentials.TrustServiceUrl("http://botrps.azurewebsites.net");         

        //obtener el contexto de los dialogos
        var dc = await _dialogs.CreateContextAsync(turnContext, cancellationToken);

        if (turnContext.Activity.Type == ActivityTypes.Message && turnContext.Activity.From.Id != turnContext.Activity.Recipient.Id)
        {
            //bot operations on users messages
        }    

        //if active dialog
        await dc.ContinueDialogAsync(cancellationToken);

        //else, start greeting dialog
        if (turnContext.Activity.Type == ActivityTypes.ConversationUpdate &&
            turnContext.Activity.MembersAdded[0].Id != turnContext.Activity.Recipient.Id)
        {
            await dc.BeginDialogAsync("dialogo", null, cancellationToken);
        }

        await _accessors.ConversationState.SaveChangesAsync(turnContext, false, cancellationToken);

        // Guarda los cambios realizados en el Contexto, si hay alguno
        await _accessors.UserState.SaveChangesAsync(turnContext, false, cancellationToken);
    }

【问题讨论】:

  • 您是否已将生产端点添加到您的机器人文件中?
  • 点击日志中invalidOperationException 的“计数”(应用洞察?)是否会显示任何类型的堆栈跟踪?
  • 谢谢你的答案。添加生产端点后,该机器人在网络聊天和 Skype 中似乎都可以正常工作。顺便说一句,我意识到它在没有“abs”服务的情况下工作。还需要指定吗?
  • 不,没有必要指定“abs”服务,因为生产端点指向它。很高兴我能帮上忙。

标签: c# azure botframework


【解决方案1】:

正如tdurnford 在评论部分所说,有必要在 .bot 配置中添加生产 enpoint 服务。生成的机器人文件:

{
  "name": "BotMod2",
  "services": [
    {
      "type": "endpoint",
      "name": "development",
      "endpoint": "http://localhost:3978/api/messages",
      "appId": "",
      "appPassword": "",
      "id": "1"
    },
    {
      "appId": "**********************",
      "appPassword": "**********************",
      "endpoint": "https://**********************.azurewebsites.net/api/messages",
      "type": "endpoint",
      "name": "production",
      "id": "2"
    },
    {
      "appId": "**********************",
      "authoringKey": "**********************",
      "version": "0.1",
      "region": "westus",
      "type": "luis",
      "name": "**********************",
      "id": "3"
    },
    {
      "type": "qna",
      "name": "**********************",
      "kbId": "**********************",
      "hostname": "https://**********************.azurewebsites.net/qnamaker",
      "endpointKey": "**********************",
      "subscriptionKey": "**********************",
      "id": "4"
    }
  ],
  "padlock": "",
  "version": "2.0"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多