Bot Framework Channel Emulator的渠道ID无效?

时间:2017-05-12 02:22:46

标签: c# botframework

我正在使用C#Bot Framework库从Bot State Service检索一些数据。每当channelId == "emulator"在下面的代码中时,它都会以400 Bad Request失败。看起来Emulator版本3.0.0.59和3.5.27都使用此通道ID。这是返回的有效负载:

{
  "error": {
    "code": "BadArgument",
    "message": "Invalid channel ID"
  }
}

请注意,如果我将channelId更改为"skype"之类的其他内容,则会按预期工作。

var credentials = new MicrosoftAppCredentials(id, password);
this.botState = new BotState(new StateClient(credentials));
var channelId = activity.ChannelId;
await botState.GetUserDataAsync(channelId, activity.From.Id);

1 个答案:

答案 0 :(得分:1)

来自Bot Framework团队的

Received this answer

  

对于模拟器,他们需要在创建状态客户端时使用activity的serviceurl。 Builder会在连接器客户端工厂中自动执行此操作:

     

https://github.com/Microsoft/BotBuilder/blob/master/CSharp/Library/Microsoft.Bot.Builder/ConnectorEx/IConnectorClientFactory.cs#L86

if (IsEmulator(this.address))
{
    // for emulator we should use serviceUri of the emulator for storage
    return new StateClient(this.serviceUri, this.credentials);
}
     

该错误来自state.botframework.com(这是stateclient的默认端点),因为模拟器不是状态服务的有效channelid。