Inject & Notify
説明
通常、チャットとはユーザーとBotの間の即時のやりとりです。しかし、時には Botが実行時間が不明確な外部プロセスを処理し、その結果を実行中のチャットセッションに使用する必要があります。例えば、BotユーザーがBotにドキュメントをアップロードし、Botはそのドキュメントを外部プラットフォームにアップロードしなければなりません、そして、外部プラットフォームによって分析され、その結果をBotがユーザーへの応答に使用する必要があります。
このようなロングランプロセスが発生すると、Cognigy.AIだけでは対応できなくなります。チャットが適切に継続できるように、外部のロングランプロセスが終了した後、Cognigy.AIをトリガーする必要があります。
このユースケースのために、Cognigy.AIはNotifyとInject-APIを備えています。
Inject
当社のinject APIを使用することで、任意のテキストとデータのペアをシステムに送ることができます。その後入力はフローに転送されます。正しいフローは、指定されたURLTokenを使用して識別されるエンドポイントによって決定されます。ボットユーザーに複雑な情報を送信したい場合は、Injectを使用する必要があります。例えば、特定の入力に基づいてリストやギャラリーの要素を生成するフローを構築することができます。例えば “makeGallery “のようなシンプルなメッセージをフローに送信すると、フローは構成されたギャラリーを正しいエンドポイントを通してボットユーザーに送信します。Notifyはこれには利用できません。
Notify
injectとは対照的に、Notifyは単純なテキストメッセージやデータメッセージを直接ユーザーに送るためだけに使うことができます。メッセージはフローに転送されないので、ユーザーが実際に受け取るものについては制御されません。
外部ロングランプロセスのトリガー
当社の/injectと/notify APIの機能を使用するには、特定のペイロードを送信する必要があります。必要なデータはInput Objectで公開されているため、CognigyScriptとJSON構文で簡単にアクセスできます。injectと/notifyの詳細については、[API Reference]をご覧ください。
HTTP-Request-Nodeを使用すると、外部のロングランプロセスをトリガーすることができ、外部固有のペイロードの次にnotifyとinjectに必要な情報を送信することができます。
Inject & Notify内のフィールド | Cognigy Script |
text | ci.text |
data | ci.data |
sessionId | ci.sessionId |
userId | ci.userId |
URLToken | ci.URLToken |
TransformersでのNotifyとInject
外部サービスがInjectまたはNotify APIに送信するペイロードを制御できない場合、Notify TransformerまたはInject Transformerを使用して制御することができます。これにより、実際のNotify / Inject APIが呼び出される前に、上記のようにリクエストを変換し、リクエストボディから必要なフィールドを抽出することができます。
Transformerを実行する場合、Notify APIとInject APIのAPI URLは異なります。これらのAPIでは、リクエストはAPIサービスではなく、Endpointサービスに送信する必要があります。つまり、システム用のベースEndpoint URL(例:https://endpoint-demo.cognigy.ai)を使用する必要があります。APIのURLは以下の通りです:
Notify: {endpoint-url}/notify/{URLToken}
inject: {endpoint-url}/inject/{URLToken}
URLTokenとは、実行されるべきEndpointのURLTokenを意味します。Transformer関数もこのEndpointに実装する必要があります。
APIの違い
Transformerを使用する場合、NotifyおよびInject APIのURLは異なります。APIのURLは以下の通りです:
Notify: {endpoint-url}/notify/{URLToken}
inject: {endpointurl}/notify/{URLToken}
対応チャネル
当社のinject-APIとnotify-APIは、互換性のあるすべてのチャネルに対応しているわけではありません。主な理由として、いくつかのエンドポイントにいつでもメッセージを送ることができないからです。例えばAlexaの場合、通信チャネルはデバイス側からしか初期化できないため、Alexaを搭載したデバイスにメッセージを送ることはできません。
以下のリストは、両APIが互換性のあるすべてのエンドポイントを示しています:
- Facebook (Meta) Messenger
- LINE Messenger
- Azure Bot Services
- RingCentral Engage
- Slack
- Socket
- Sunshine Conversations
- Voice Gateway
- Inject/Notify は、Voice Gatewayで Async Modeが有効な場合のみ対応。
- Webchat
- Webhook