3

Microsoft Botframework用の Python Web アプリケーション内で、REST API 呼び出しを使用してメッセージに返信したいと考えています。/bot/v1.0/messages

ローカル マシンでエミュレーターを試してみたところ、REST 呼び出しの最小ペイロードは次のようになっていることがわかりました。

{
  "text": "Hello, Hello!",
  "from": {
    "address": "MyBot"
  },
  "channelConversationId": "ConvId"
}

"ConvId"、元のメッセージでローカル エミュレーターによって指定された ID です (送信しchannelConversationIdないでくださいconversationId)。

明らかに、これはライブ ボット コネクタ サイトには十分ではありません。しかし、REST API 呼び出しでメッセージに返信するための (最小限の) 例は/bot/v1.0/messages何ですか?

ドキュメントに示されているように、属性from、、、、などを使用して、さまざまなペイロードデータをテストしました。しかし、通常、私はエラーが発生します:tochannelConversationIdtextlanguage500

{
  "error": {
    "message": "Expression evaluation failed. Object reference not set to an instance of an object.",
    "code": "ServiceError"
  }
}

元のメッセージを送り返そうとするとtofromスワップしただけで、別の500エラーが発生しました。

{
  "error": {
     "code": "ServiceError",
     "message": "*Sorry, Web Chat is having a problem responding right now.*",
     "statusCode": 500
  }
}
4

2 に答える 2

3

インライン応答 (応答として返される) の最小ペイロードは次のとおりです。

{ "text": "Hello, Hello!" }

POST to を使用して帯域外に返信を投稿している場合/bot/v1.0/messagesは、もう少し必要です。Bot Builder SDK の Node バージョンで行うことは次のとおりです。

// Post an additional reply
reply.from = ses.message.to;
reply.to = ses.message.replyTo ? ses.message.replyTo : ses.message.from;
reply.replyToMessageId = ses.message.id;
reply.conversationId = ses.message.conversationId;
reply.channelConversationId = ses.message.channelConversationId;
reply.channelMessageId = ses.message.channelMessageId;
reply.participants = ses.message.participants;
reply.totalParticipants = ses.message.totalParticipants;
this.emit('reply', reply);
post(this.options, '/bot/v1.0/messages', reply, (err) => {
    if (err) {
        this.emit('error', err);
    }
});

元の会話に返信するために必要なすべてのルーティング ビットを含める必要があるため、既存の会話への返信の送信は少し複雑です。新しい会話を開始するのは非常に簡単です。

// Start a new conversation
reply.from = ses.message.from;
reply.to = ses.message.to;
this.emit('send', reply);
post(this.options, '/bot/v1.0/messages', reply, (err) => {
    if (err) {
        this.emit('error', err);
    }
});

reply.textどちらの例も、 &reply.languageが既に設定されていることを前提としています。

于 2016-04-18T04:44:09.303 に答える