この記事では、マルチプロトコルボットが
Microsoft Bot Connector API-v3.0を介してどのように機能するかの簡単な例を説明し
ます 。 このようなボットの
スカイプに関するトピックに関するHabréの記事はすでにあります。
「Skype用の独自のボットを作成する方法。 and7eyによる
ドキュメント ' 'および
Hello、Bot! チャットボット -次世代のアプリケーション?」 by
shwars しかし、最初の記事ではapis.skypeを使用した作業について説明しており、そこに記載されているオプションはマルチプロトコルではありません。2番目の記事ではC#による実装について説明します。
この記事が必要なのはなぜですか?
まず、ボットを作りたいが、C#の使用方法を知らないが、RESTの使用方法を知っている「男」に。
第二に、私にとっては、APIのいくつかのバージョンを解析し、どのAPIとどのように使用する必要があるかを理解するのにかなりの時間を費やしたためです。 したがって、記事の中
で紙に書いた経験を統合したいと思います(OK、取り消し線付きのチップを使用することはもうありません)。
ログイン
完全に(私が評価できた限り)は、私が上記で言及した記事で検討されています。 説明どおりにそれを行い、トークンを取得し、開始されました-私たちは「一baseに」あります(これは三thirdに揺れる大当たりが与えられる基地についての一般的に受け入れられている類推ではありません、彼女ではありません)。
メッセージを受信する
ボットには、jsonボディを持つリクエストが来るエンドポイントが必要です。 たとえば、skypeを介してボットに「hello bot」というテキストとともに送信されるメッセージは次のようになります。
json {
「タイプ」:「メッセージ」、
「id」:「1q80QckzCi3wL6zg」、
「タイムスタンプ」:「2016-08-16T12:56:16.49Z」、
「serviceUrl」:「https://skype.botframework.com」、
「channelId」:「skype」、
「from」:{
「id」:「29:1Phe2HAxz6CD9uc1O_PVl_Zih6doxIe_KuyrQ9eANUbs」、
「名前」:「avvero」
}、
「会話」:{
「id」:「29:1Phe2HAxz6CD9uc1O_PVl_Zih6doxIe_KuyrQ9eANUbs」
}、
「受信者」:{
「id」:「28:300cbb48-78e0-4998-8e85-4f4c7ccb5aee」、
「名前」:「notify_bot」
}、
「text」:「helloボット」、
「エンティティ」:[
]
}
このリクエストで私たちにとって特に重要なのは:
- conversation.id-会話識別子
- channelId-チャネル識別子
これらの2つのパラメーターは、それらに基づいて、ボットフレームワークにリクエストを送信するためにURLが定義されるため、特に重要です。 同時に、conversationIdロールはAPIの
説明 (
swagger )で言及されて
いますが、channelIdでは、すべてがそれほど明白ではない、より正確にはnifig(技術用語)は明白ではありません。 たとえば、skypeチャネルのボットからのメッセージは次のようになります。
https://
skype .botframework.com / v3 / conversations / {conversationId} /アクティビティ、
そして、ここでの電報の場合:
https:// telegram .botframework.com / v3 / conversations / {conversationId} /アクティビティ。
ほとんどの時間はこの機能を特定するのに費やされていたので、私はドキュメントにこれを見ていないし、これは悪いです。
メッセージを送信する
skypeの場合、最小リクエスト本文は次のとおりです。
json {
「タイプ」:「メッセージ」、
「テキスト」:「こんにちは」
}
そして、このような電報の場合(
fromオブジェクトが必要です):
json {
「タイプ」:「メッセージ」、
「from」:{
「id」:「avvero_notify_bot」、
「名前」:「avvero」
}、
「テキスト」:「こんにちは」
}
カード
単一のテキストではありません。 あなたはカードを送ることができます(ここに電報のメッセージの例があります、スカイプのためにそれはからなしで可能です):
json {
「タイプ」:「メッセージ」、
「from」:{
「id」:「avvero_notify_bot」、
「名前」:「avvero」
}、
「テキスト」:「こんにちは」、
「添付ファイル」:[
{
「contentType」:「application / vnd.microsoft.card.hero」、
「コンテンツ」:{
「タイトル」:「タイトル」、
「字幕」:「字幕」、
「テキスト」:「テキスト」、
「画像」:[
{
"url": "https://pp.vk.me/c7011/v7011856/3160d/HVELORSo5KM.jpg"、
「alt」:「こんにちは」
}
]、
「ボタン」:[
{
「タイプ」:「imBack」、
「タイトル」:「はい」、
"値": "はい<context offer = \" ... \ "/>"
}、
{
「タイプ」:「imBack」、
「タイトル」:「いいえ」、
「値」:「いいえ」
}、
{
「タイプ」:「openUrl」、
「タイトル」:「Google」、
「値」:「https://disney.radisson.com」
}
]
}
}
]
}
スカイプでは、次のようになります。

このような電報では:

終わり
基本的に、私が伝えたかったのはそれだけです。 そのようなボットを使用する場合の問題に言及する価値があります。
スカイプの場合:
電報の場合:
- @記号を使用してグループ内のボットにアクセスできません。メッセージがボットに送信されません。メッセージの前に/記号を付けると、メッセージはボットに送信されます。 だから「/こんにちはボット」
ご清聴ありがとうございました!