2017-05-12 1 views
0

私はBot State Serviceからいくつかのデータを取得するためにC#Bot Frameworkライブラリを使用しています。下のコードにchannelId == "emulator"がある場合は、400 Bad Requestで失敗します。エミュレータバージョン3.0.0.59と3.5.27の両方がこのチャンネルIDを使用しているようです。ここで返されるペイロードです:BotフレームワークチャネルエミュレータのチャネルIDが無効ですか?

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

注私は"skype"のような何か他のものにchannelIdを変更する場合に予想されるとして、それが動作すること。ボットFrameworkのチームから

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

Received this answer:彼らは状態のクライアントを作成するときに、アクティビティのserviceURLのを使用する必要がエミュレータのために

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ないので:Builderは自動的にコネクタクライアントの工場にあることありませんサービス。

関連する問題