Architect を使用して、予約をスケジュールするためのデジタルボットを作成します

Architect でデジタル ボット フローを作成して、予定をスケジュールし、受信メッセージ フローでボット フローを使用することができます。フロー内でデジタル ボットを作成するか、個別に作成して受信メッセージ フローから呼び出します。 

Architect を使用して予約をスケジュールするためのデジタルボットを作成する 

この手順では、受信メッセージ フロー用のボットを作成する方法について説明します。この例では、ユーザーはボットが提供する時間枠のリストから予約日時を選択します。カレンダー イベントは、スケジュールや予約に役立つサードパーティの API エンドポイントから取得されます。

また、データアクション統合で使用するためにGenesys Cloudでカスタムアクションを作成することもできます。 テンプレートとして使用する既存のアクション(静的またはカスタム)をコピーするか、または次の手順に従ってまったく新しいアクションを作成します。 アクションを追加するときには、契約と構成を追加するか、別のデータアクションからそれらをインポートすることができます。

Genesys Cloud では、データ アクションを使用して、ボットの会話中に値を取得します。入力コントラクトと出力コントラクトを定義します。データ アクションの出力契約は、エンドポイントへのルートで構成した戻りメッセージと一致する必要があります。 

Genesys Cloudでデータアクションを作成するには、次の手順を実行します。

  1. Genesys Cloudで、 管理.
  2. 下 統合クリック 行動。
  3. 統合用のカスタムアクションを作成する
  4. 契約を追加する。 
  5. 設定を追加。 
  6. アクションをテストする。

詳細については、 統合のための個々のアクションの管理.

例:テストAPIエンドポイント

自然言語理解 - タイムスロット

例:Genesys Cloudデータアクション契約タブ

自然言語理解 - タイムスロット

  1. Architect のホームページから、 流れ メニューと選択 デジタルボットフロー.
  2. クリック  追加する。 [Bot フローの作成] ダイアログ ボックスが開きます。
  3. の中に フィールドに、フローの一意の名前を入力します。 
  4. (オプション) 説明 このフローを説明する短い文またはフレーズを追加します。
  5. をクリックします。 既定の言語 をクリックし、フローのサポートされている言語デフォルト選択します。
  6. クリック 部署 フローを配置する部門をリストして選択します。
  7. クリックします。 フローを作成します。.  フローの設定ページが開きます。

アーキテクトボットフローからデータアクションを呼び出すには、次の手順に従います。

  1. アーキテクトツールボックスから、 データアクションの呼び出し Start要素の下のタスクエディタに移動します。
  2. カテゴリー、適切な統合カテゴリを選択します。たとえば、Webサービスのデータアクション。
  3. データアクション、Genesys Cloud Admin で作成したスケジューラ データ アクションを選択します。
  4. 成功出力を構成するには、次の手順を実行します。
    • 変数を設定するスロット.開始時間開始日時値を格納するフィールドコールデータアクション。例えば、Flow.availableStartTimes
    • 変数を設定するスロット.期間から取得した期間の値を格納するフィールドコールデータアクション。例えば、Flow.appointmentDurations
  5. 失敗出力とタイムアウトを定義します。

例:コールデータアクション

自然言語理解 - タイムスロット

データ アクションからデータを変換して、フローで使用するタイムスロット オブジェクトのリストを準備します。 

取得したデータを読むには、ループアクション:

  1. Architectツールボックスから、ループアクションをタスクエディタに追加します。コールデータアクション
  2. 次のようなインデックスデータ名を追加します。Flow.loopindex
  3. ループの最大カウントを式に設定します。Count(Flow.availableStartTimes) 。成功パスで定義された変数のいずれかを選択できます。コールデータアクション
    この方法に従うと、データ アクションによって返される項目ごとにループが 1 回実行されます。後で、タイムスロット オブジェクトのリストを作成し、コレクション データ型に保存できます。
  4. タイムスロットコレクションを作成するには、 
    1. ツールボックスから、データカテゴリーをドラッグしてデータの更新行動にループアクション。
    2. データの更新ワークスペースで、の隣に更新ステートメント選択してコレクション
    3. コレクションリストを開いた状態で、タイムスロットコレクション
    4. 変数名1 、タイムスロットの完全なリストを保存するリストの名前を入力します。例えば、Flow.timeslots
    5. 割り当てる値 1 、次の式を追加します。AddItem(Flow.timeslots, MakeTimeslot(ToDateTime(Flow.availableStartTimes[Flow.loopindex]), ToDuration(Flow.appointmentDurations[Flow.loopindex])))
      上の式はリスト内の項目を取り、Flow.availableStartTimes現在のループ インデックスと一致し、それを DateTime オブジェクトに変換します。また、リストから対応する項目を取得します。Flow.appointmentDurationsそれを期間オブジェクトに変換します。最後に、2 つを新しいタイムスロット オブジェクトに結合し、そのオブジェクトをタイムスロット コレクション変数に追加します。

メモ: 
  • 一部のメッセージング チャネルでは、秒またはミリ秒単位の時間選択がサポートされていません。このような場合、ユーザー入力の不一致を防ぐために、フロー内の時間形式を時間と分に制限することができます。
  • 各タイムスロット コレクションには最大 50 個の DateTime 値を含めることができます。

例:ループアクション

自然言語理解 - タイムスロット

例:データ更新アクション

自然言語理解 - タイムスロット

  1. 自然言語理解、クリックスロット
  2. クリックスロット
  3. スロットに意味のある名前を付けてクリックします保存
  4. 自然言語理解、クリックスロットタイプ
  5. 新しく追加されたスロット タイプ名をクリックします。 
  6. タイムスロットの下でクリックコレクションを追加。そのタイムスロットウィンドウが表示されます。
  7. 次の表現を追加します。Flow.timeslotsクリック近い

例:式モードのタイムスロット

自然言語理解 - タイムスロット

  1. Architectツールボックスから、スロットを尋ねるアクションをタスクエディタに追加します。ループアクション。
  2. 「スロット」の下で、以前に作成したタイムスロットを選択し、関連するフィールドに入力します。
  3. ボットでどのように表示されるかに応じて、プロンプト画像、タイトル、サブタイトル、アドレスをカスタマイズします。
  4. フローを公開.

例:時間ピッカーのカスタマイズでスロットをリクエストする

自然言語理解 - タイムスロット

場合:データアクションが失敗しました

サードパーティAPIでエラーが発生した場合、ボットフローは失敗パスに進みます。コールデータアクション。ユースケースに応じて失敗パスをカスタマイズします。例えば、 ACDへの転送対応可能なエージェントに対話をルーティングするアクション。 

場合:データアクションがタイムアウトしました

サードパーティAPIへのリクエストがタイムアウトした場合、ボットフローはタイムアウトパスを経由します。コールデータアクション。データアクションは 2 回目または 3 回目の試行で成功する可能性があります。複数回の試行を設定するには、コールデータアクション以内ループ最大ループカウントがかなり低いアクション。また、ループを終了後の行動コールデータアクション

場合:サードパーティAPIはタイムスロットを返しません

すべての時間帯が予約済みであっても、コールデータアクションリクエストが正常に処理されたため、成功パスが実行されます。スロットに電力を供給するために使用できるタイムスロット値がないため、ボットでエラーが発生する可能性があります。この場合、「Error.Expresson.EmptyCollection」というメッセージが表示されます。このエラーを防ぐには、決断ブロックの後にデータの更新アクション(既存のループアクション)。使用することができます決断ブロックを実行するスロットを尋ねる有効なタイムスロット値が利用可能な場合にのみアクションを実行します。タイムスロットリストが空かどうかを調べるには、次の式を使用します。IsNotSetOrEmpty(Flow.timeslots)

場合:すべての時間帯は過去です

すべての時間帯が過去であっても、コールデータアクションリクエストが正常に処理されたため、成功パスが実行されます。ただし、ボットは過去のタイムスロットを提示できません。ユーザーに表示されるすべてのタイムスロットが将来のものであることを確認するには、別の決断ブロックの前にデータの更新アクション(内部ループアクション)。

表現、ToDateTime(Flow.availableStartTimes[Flow.loopIndex]) > GetCurrentDateTimeUtc()は、タイムスロットが過去の日付か将来の日付かを確認するのに役立ちます。

このデジタルボットのフローを受信メッセージのフローから呼び出すことができるようになりました。