チャネルの基本

チャネルとは

デジタル・アシスタントとスタンドアロン・スキルをユーザーに公開するには、デジタル・アシスタントでチャネルを構成します。チャネルは、様々なメッセージング・プラットフォーム上のユーザーとデジタル・アシスタントおよびその様々なスキルとの間のチャットを伝送します。ユーザー・エージェントのエスカレーションとテストのチャネルもあります。

チャネル・タイプ

左側のメニューで「チャネル」をクリックしてアクセスする「チャネル」ページから、次のチャネル・タイプを作成および管理できます。タイプごとに1つのタブがあります。

チャネル・タイプ 用途
ユーザー
エージェント統合
  • Oracle B2C ServiceまたはOracle Fusion Serviceユーザーを構成します。スキルは、このユーザーを介してサービスと通信します。エージェント統合チャネルの作成には、ダイアログ・フローのサービスとエージェント・コンポーネントの両方に関する構成の詳細が記載されています。

  • エージェント統合を有効または無効にします。

DA (エージェント)
  • デジタル・アシスタントをOracle B2C ServiceまたはOracle Fusion Serviceと統合します。そこで、デジタル・アシスタントは、サービス・インスタンスに埋め込まれた自動エージェントとして機能します。

アプリケーション
  • 外部アプリケーションからスキルに通知を送信するアプリケーション・チャネルを構成して、スキルが会話をトリガーできるようにします。アプリケーションによって開始される会話の実装では、通知に応答するスキルを構成するプロセスについて説明します。

  • アプリケーションからのこの通知の送信を有効にするか、または無効にします(これにより、スキルによって開始される会話が行われないようにします)。

システム
  • すべてのスキル開発者について、スキル・テスターでのチャットを有効または無効にします。

  • すべてのスキル開発者のチャット・セッションをリセットします。

ユーザー・チャネル・ルーティング

ユーザーに表示されるチャネルそれぞれを、デジタル・アシスタントまたはスキルの1つのバージョンにルーティングできます。


routing-menu.pngの説明が続きます
図routing-menu.pngの説明

1つのチャネルで実行できるスキルまたはデジタル・アシスタントのバージョンは常に1つのみです。スキルの新しいバージョンを作成する場合、古いバージョンへのルーティングを停止し、更新されたバージョンへのルーティングを割り当てることができます。

それぞれに個別のチャネルを作成することで、スキルまたはデジタル・アシスタントの2つのバージョンの同時実行をサポートできます。たとえば、ベータ・テスト担当者が1つのチャネルを介してスキルにアクセスしている間に、顧客は別のチャネルを介してチャットを中断することなく続行できます。

チャネルのルーティング(または再ルーティング)

  1. サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「開発」→「チャネル」→「ユーザー」を選択します。

  2. 「ユーザー」タブを選択し、チャネルを選択します。
  3. チャネルで、「ルート先」フィールドの横にある「ルート先...」ドロップダウンのアイコンを選択し、チャネルをルーティングするデジタル・アシスタントまたはスキルを選択します。

デジタル・アシスタントのユーザー・チャネル・ルーティングの仕組み

スキルをデジタル・アシスタントに登録すると、スキルが送信するメッセージと受信するメッセージの両方がデジタル・アシスタントのユーザー・チャネルを介してリレーされます。スキルに他のチャネルがすでにルーティングされている場合でも、デジタル・アシスタントのルーティングが優先されます。

たとえば、それぞれ独自のWebチャネルがデジタル・アシスタントに登録されている2つのスキルがあり、デジタル・アシスタントは独自のWebチャネルとFacebookチャネルにルーティングするとします。ユーザーがデジタル・アシスタントのWebチャネルを介してデジタル・アシスタントにメッセージを送信すると、インテントが判別され、適切なスキルにメッセージが送信されます。スキルが応答する際、そのメッセージは、スキルのWebチャネルではなく、デジタル・アシスタントのWebチャネルを介してユーザーに返信されます。同様に、デジタル・アシスタントがFacebookサブスクライバからのメッセージをインターセプトすると、ユーザーに対するスキルのレスポンスは、スキルの独自のWebチャネルではなく、デジタル・アシスタントのFacebookチャネルを介して返信されます。

チャネルのレンダリングのテスト

デジタル・アシスタントまたは個別スキルとの会話が特定のユーザー・チャネルでどのようにレンダリングされるかを確認するには、テスターを使用します。

  1. テストするデジタル・アシスタントまたはスキルを開きます。

  2. デジタル・アシスタントまたはスキルの左側のナビゲーションの下部にあるテスターのアイコンをクリックします。

  3. 「チャネル」ドロップダウンで、デジタル・アシスタントまたはスキルをデプロイするチャネルを選択します。

  4. テスターの下部にあるテキスト・フィールドに、テスト・テキストを入力します。

チャネルをテストすると、それがチャネルでどのように表示されるかを確認できます。また、そのチャネル・タイプに、本来とは異なる形で会話がレンダリングされる制限がある場合は、「会話」タブにそれらの制限が記載されます。

停止時間ゼロのチャネル更新

ユーザーの停止時間を発生させることなく、スキルまたはデジタル・アシスタント間でチャネルを再ルーティングできます。

設定方法は次のとおりです:

  • デジタル・アシスタントにルーティングされているチャネルの場合:
    1. デジタル・アシスタントの新しいバージョンを作成します。
    2. デジタル・アシスタントの新しいバージョンで、既存のスキルの新しいバージョンを追加するなど、必要な変更を加えます。
    3. チャネルをデジタル・アシスタントの新しいバージョンに再ルーティングします。
  • 個別スキルにルーティングされているチャネルの場合:
    1. スキルの新しいバージョンを作成し、必要な更新を行って、スキルを公開します。
    2. チャネルをスキルの新しいバージョンに再ルーティングします。

チャネルが再ルーティングされた後の動作は次のとおりです:

  • ユーザーにオープン・セッションがない場合、次にチャネルにアクセスしたときに、新しいデジタル・アシスタントまたはスキルが表示されます。
  • ユーザーにデジタル・アシスタントまたはスキルとのオープン・セッションがあっても、スキルのフローの途中でなければ、更新されたデジタル・アシスタントまたはスキルを使用してセッションがリフレッシュされます。
  • チャネルの再ルーティング時に、ユーザーがスキルのフローの途中であった場合、前のバージョンのスキルまたはデジタル・アシスタントが引き続き表示されます。フローを終了すると(フローでreturn遷移がコールされたときに発生する)、更新されたデジタル・アシスタントまたはスキルを使用してセッションが更新されます。

注意:

既存のデジタル・アシスタントを更新する場合(デジタル・アシスタントの新しいバージョンを作成し、そのバージョンに再ルーティングするのではなく)、停止時間ゼロ機能は動作しません。たとえば、スキルの新しいバージョンがデジタル・アシスタントに追加されたときに、ユーザーがスキルの古いバージョンとのセッションの途中であった場合、セッションが中断され、スキルは動作を停止します

チャネルでのリッチ・テキスト形式

HTMLタグを使用して、チャネル固有のマークアップまたはマークダウンがあるチャネルでも、スキル・メッセージを書式設定できます。メッセージがチャネルに渡されると、含めるHTMLタグは、その特定のチャネルに対して適切なマークアップまたはマークダウンに置き換えられます。これにより、複数のチャネルに対してメッセージを1箇所に書き込むことができます。

タグがチャネルで直接同等でない場合、最も近いものが使用されます。たとえば、メッセージに<h1>Title 1</h1>および<h2>Title 2</h2>タグがある場合、Slackチャネルに送信されると、*Title 1*および*Title 2*に変換されます。

チャネル内のタグに相当するものがない場合は、チャネルに送信されるときにメッセージからタグが取り除かれます。

スタイル HTMLタグおよび属性
bold <strong>; <b>
斜体 <em>; <i>
ヘッダー <h1>; <h2>; <h3>
順序なしリスト(ネストを含む) <ul>; <li>
順序付きリスト(ネストを含む) <ol>; <li>
書式設定済みのテキスト <pre>
blockquote <blockquote>
newline <newline>
ハイパーリンク <a href="">

ノート:リンクにアンパサンド(&)が含まれている場合は、必ず&amp;を使用してエンコードし、タグが正しく解析されるようにしてください。

image link <img>
<table>; <th>; <tr>; <td>
フォント・サイズ font-size (例: <p style="font-size:large;">Large Font</p>)
フォント色 color (例: <p style="color:red;">Red Font</p>)
ビデオ <video controls="" src="link_to_video_source_file">

ノート:このタグは、.mp4などのビデオ・ファイルに直接リンクする場合にのみ機能します。YouTubeリンクでは機能しません。

セッションの有効期限

構成するチャネルごとに、「セッションの有効期限」フィールドを使用して、非アクティブ・ユーザー・セッションのタイムアウトを設定します。ほとんどのチャネル・タイプで、デフォルト値は1日(1440分)です。セッションが期限切れになると、会話は終了し、その事実をユーザーに通知するメッセージが送信されます。

また、変数がユーザー・スコープ変数として宣言されていない場合、スキルのダイアログ・フローで設定された変数は破棄されます。「YAMLダイアログ・フローでのユーザー・スコープ変数」を参照してください。

セッション有効期限プロンプトの変更

セッションが期限切れになると、チャネルのルーティング先となるデジタル・アシスタントまたはスキルの「期限切れセッション・エラー・プロンプト」プロパティに設定されたメッセージがユーザーに表示されます。デフォルトでは、このメッセージは「セッションが期限切れです。再度開始してください」です。

デジタル・アシスタントでこのメッセージを変更するには:

  1. サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「開発」→「デジタル・アシスタント」を選択してデジタル・アシスタントを開きます。

  2. デジタル・アシスタントの左側のナビゲーションで「設定」のアイコンをクリックし、「構成」タブを選択します。

  3. ページの「他のパラメータ」セクションまで下にスクロールして、「期限切れセッション・エラー・プロンプト」プロパティを更新します。

スタンドアロン・スキルでこのメッセージを変更するには:

  1. サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「開発」→「スキル」を選択してスキルを開きます。

  2. スキルの左側のナビゲーションで「設定」のアイコンをクリックし、「構成」タブを選択します。

  3. 「期限切れセッション・エラー・プロンプト」プロパティを更新します。

ユーザー・チャネル・セッションのリセット

必要に応じて、「セッションのリセット」ボタンをクリックすることにより、ユーザー・チャネルにおける現在の会話を中止できます。

注意:

このボタンは主に、スキルまたはデジタル・アシスタントの開発中に使用することを目的としたものです。本番環境のチャネルに使用すると、進行中のユーザーの会話がすべて中断されます。

「セッションのリセット」ボタンにアクセスするには:

  • サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「開発」→「チャネル」を選択して、ユーザー・チャネルを選択します。

チャネルの有効化または無効化

時折、チャネルを無効にしてメンテナンスや構成の更新を行った後、チャネルを再度有効にすることが必要になる場合があります。

これを行うには、次のスイッチを使用できます:

  • チャネル有効
  • 対話が有効(エージェント統合の場合)
  • アプリケーション有効(アプリケーションの場合)

スキル・テスターをサポートするシステム・チャネルを無効にすると、チャネルが使用できないというアラートが開発者に表示されます。

これらのオプションにアクセスするには:

  • サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「開発」→「チャネル」を選択して、チャネルを選択します。

チャネル固有の拡張機能

複数のチャネルにわたってレンダリングするためにダイアログ・フローで使用できる汎用要素に加えて、チャネル・タイプに固有の機能を利用することもできます。そのためには、共通レスポンス・コンポーネントのchannelCustomPropertiesメタデータ要素を使用します:

...
            channelCustomProperties:
            - channel: "CHANNEL_NAME" // can be facebook, slack, cortana, twilio, androidsdk, iossdk, websdk, test
              properties:
                PROPERTY_NAME: "PROPERTY_VALUE"
...

コンポーネントのメタデータ内のchannelCustomPropertiesは、指定されたプロパティに応じて、globalActionsresponseItems、およびresponseItemsの要素のレベルで適用できます。

レスポンス・アイテム・レベルとカード・レベルで定義されたカスタム・プロパティの例を次に示します:

responseItems:
  - type: "cards"
    cardLayout: "vertical"
    cards:
      - title: "${pizzas.name}"
        description: "${pizzas.description}"
        imageUrl: "${pizzas.image}"
        url: "${pizzas.moreInfo}"
        iteratorVariable: "pizzas"
        channelCustomProperties:
          - channel: "facebook"
            properties:
              webview_height_ratio: "compact"
              fallback_url: "https://www.example.com"
    channelCustomProperties:
      - channel: "facebook"
        properties:
          top_element_style: "large"
..

channelCustomProperties要素は配列を受け取ります。各エントリは特定のチャネルのプロパティを指定します。カスタム・プロパティの中には、特定の共通レスポンス・コンポーネント要素、あるいは特定のレスポンス・アイテム・タイプにのみ適用可能なものもあります。上の例では、top_element_stylecardsタイプのレスポンス・アイテムにのみ適用されます。

また、Freemarker式を使用してチャネル・カスタム・プロパティの値を指定することもできます。

コンポジット・バッグ・エンティティであるexpenseの解決時に経費日付アイテムの入力を要求された場合に日付ピッカーがSlackにのみ表示される例を次に示します:

responseItems:
  - type: "text"
    text: "${system.entityToResolve.value.prompt}"
    channelCustomProperties:
      - channel: "slack"
        properties:
          showDatePicker: "${system.entityToResolve.value.name=='Date'}"
...

使用可能なプロパティは、チャネルによって異なります。それぞれのチャネルで使用可能なカスタム・プロパティのリストは、次の各トピックを参照してください:

チャネル機能の比較

ここでは、チャネルおよび各チャネルでサポートされている機能を比較します(すべてを網羅しているわけではありません)。

機能 Facebook Messenger Slack Microsoft Teams Cortana Twilio Web、iOSおよびAndroid
テキスト はい はい はい はい はい はい
イメージ はい はい はい 送信については、はい。受信については、いいえ 一部 はい
ファイル はい 送信については、一部。受信については、はい はい 送信については、はい。受信については、いいえ 一部 はい
絵文字 はい 送信については、一部。受信については、はい はい 送信については、はい。受信については、いいえ 一部 はい
ロケーション はい(ただし非推奨) いいえ いいえ いいえ いいえ はい
リンク はい はい はい はい はい はい
ポストバック はい はい はい いいえ 一部 はい
ロケーション・リクエスト はい いいえ いいえ いいえ いいえ はい
拡張機能 いいえ いいえ いいえ いいえ いいえ いいえ
カスタム・プロパティ はい はい はい はい 一部 はい
カルーセル はい 一部 はい はい 一部 はい
リスト はい はい はい はい 一部 はい
表とフォーム いいえ はい はい(自動発行はサポートされていません) いいえ いいえ はい
ノート

ダイアログ・フローから絵文字をレンダリングするには、そのUnicode表現から始めて、+000に置き換え、コードの先頭に\を付けます。たとえば、U+1F600の場合、ダイアログ・フローでは\U0001F600と入力します。各絵文字のUnicodeコードのリストは、https://unicode.org/emoji/charts/full-emoji-list.htmlを参照してください。

チャネル・メッセージの制約の比較

ここでは、メッセージとアクション・ボタンに関する制約をチャネル別に比較します。

テキスト・メッセージの制約

テキスト・メッセージの制約 Facebook Messenger Slack Microsoft TeamsおよびCortana Twilio Web、iOSおよびAndroid
テキスト・メッセージの最大長 640文字。長さが640を超えると、テキストは複数のメッセージに分割されます。 3000文字。長さが3000を超えると、テキストは複数のメッセージに分割されます。 制限なし。 1600文字。長さが1600を超えると、テキストは複数のメッセージに分割されます。 制限なし。
テキスト・アクション・ラベルの最大長 20文字 30文字 1行(約50文字) N/A 128文字
許可されるテキスト・アクションのタイプ ポストバック、コール、URL ポストバック、URL ポストバック、コール、URL ポストバック、コール、URL。これらのアクション・タイプはテキストに変換されます。ポストバック・アクションの場合、ラベルは、ポストバックをトリガーするために使用できるキーワードとして機能します。 ポストバック、URL、ロケーション・リクエスト、コール(デバイスにコール機能がある場合)および共有(プラットフォームでサポートされる場合)
テキスト・アクションの最大数 テキスト・アクションがこれよりも多い場合、メッセージは複数の水平カードに変換されて、各カードで同じテキストがタイトルとして使用され、各カードに最大3つのアクションが含まれます。 制限なし。 制限なし。 N/A テキスト・アクションがこれよりも多い場合、メッセージは複数の水平カードに変換されて、各カードで同じテキストがタイトルとして使用され、各カードに最大6つのアクションが含まれます。

水平カード・メッセージ

水平カード・メッセージの制約 Facebook Messenger Slack Microsoft TeamsおよびCortana Twilio Web、iOSおよびAndroid
サポートの有無 はい いいえ。カードのレイアウトは垂直に変換されます。 はい いいえ。ただし、一部のアクション・タイプをテキストに変換することで、ほぼ同等の機能が実現されます。 はい
タイトルの最大長 80文字 3000文字 2行(約80文字) N/A 30文字
説明の最大長 80文字 3000文字 25,000文字 N/A 128文字
カード・アクション・ラベルの最大長 20文字 30文字 1行(約50文字) N/A 25文字
カードの最大数 10 N/A 10 N/A 10
カード・アクションの最大数 3。カード・アクションの数が3を超える場合、残りのカード・アクションをレンダリングするためにカードが複製されます。 N/A 6。カード・アクションの数が6を超える場合、残りのカード・アクションをレンダリングするためにカードが複製されます。 N/A 3。カード・アクションの数が3を超える場合、残りのカード・アクションをレンダリングするためにカードが複製されます。
カード・アクションの最小数 0 N/A 0 N/A 1
カード・リスト・アクションの最大数 0 N/A 6 N/A --
説明、イメージまたはアクションが少なくとも1つ必要かどうか はい N/A いいえ N/A いいえ
許可されるカード・アクションのタイプ ポストバック、コール、URL、共有 ポストバック、URL ポストバック、コール、URL ポストバック、コール、URL。これらのアクション・タイプはテキストに変換されます。ポストバック・アクションの場合、ラベルは、ポストバックをトリガーするために使用できるキーワードとして機能します。 ポストバック、URL
許可されるカード・リスト・アクションのタイプ N/A ポストバック、URL ポストバック、コール、URL ポストバック、コール、URL。これらのアクション・タイプはテキストに変換されます。ポストバック・アクションの場合、ラベルは、ポストバックをトリガーするために使用できるキーワードとして機能します。 ポストバック、URL

垂直カード・メッセージ

垂直カード・メッセージの制約 Facebook Messenger Slack Microsoft TeamsおよびCortana Twilio Web、iOSおよびAndroid
サポートの有無 いいえ はい はい いいえ。ただし、一部のアクション・タイプをテキストに変換することで、ほぼ同等の機能が実現されます。 はい。
ノート

19.4.1では、これはサポートされません。
タイトルの最大長 N/A 3000文字 2行(約80文字) N/A 30文字
説明の最大長 N/A 3000文字 25,000文字 N/A 128文字
カード・アクション・ラベルの最大長 N/A 30文字 1行(約50文字) N/A 25文字
カードの最大数 N/A 100 10 N/A N/A
カード・アクションの最大数 N/A -- 3 N/A N/A
カード・アクションの最小数 0 0 0 N/A N/A
カード・リスト・アクションの最大数 1 -- 6 N/A N/A
説明、イメージまたはアクションが少なくとも1つ必要かどうか はい N/A いいえ N/A いいえ
許可されるカード・アクションのタイプ ポストバック、コール、URL、共有 ポストバック、URL ポストバック、コール、URL ポストバック、コール、URL。これらのアクション・タイプはテキストに変換されます。ポストバック・アクションの場合、ラベルは、ポストバックをトリガーするために使用できるキーワードとして機能します。 N/A
許可されるカード・リスト・アクションのタイプ ポストバック、コール、URL ポストバック、URL ポストバック、コール、URL ポストバック、コール、URL。これらのアクション・タイプはテキストに変換されます。ポストバック・アクションの場合、ラベルは、ポストバックをトリガーするために使用できるキーワードとして機能します。 N/A

アタッチメント・メッセージ

アタッチメント・メッセージの制約 Facebook Messenger Slack Microsoft TeamsおよびCortana Twilio Web、iOSおよびAndroid
サポートの有無 はい はい はい はい(MMSが有効な場合) はい
アタッチメント・アクションの最大数 0 -- -- N/A --
許可されるアクションのタイプ N/A ポストバック、URL ポストバック、コール、URL。 ポストバック、コール、URL。これらのアクション・タイプはテキストに変換されます。ポストバック・アクションの場合、ラベルは、ポストバックをトリガーするために使用できるキーワードとして機能します。 ポストバック、URL

アクション・ボタン

アクション・ボタンの制約 Facebook Messenger Slack Microsoft TeamsおよびCortana Twilio Web、iOSおよびAndroid
サポートの有無 はい はい はい いいえ。ただし、一部のアクション・タイプをテキストに変換することで、ほぼ同等の機能が実現されます。 はい
グローバル・アクション・ラベルの最大長 20文字 30文字 1行(約50文字) N/A 128文字
グローバル・アクションの最大数 11 -- 6 N/A --
許可されるグローバル・アクションのタイプ ポストバック、ロケーション ポストバック、URL ポストバック、コール、URL ポストバック、コール、URL。これらのアクション・タイプはテキストに変換されます。ポストバック・アクションの場合、ラベルは、ポストバックをトリガーするために使用できるキーワードとして機能します。 ポストバック、ロケーション