OVERVIEW
Virtual Assistants
Kore.ai Platform
Key Concepts
Natural Language Processing (NLP)
Accessing Platform
VIRTUAL ASSISTANTS
Virtual Assistant Builder
Virtual Assistant Types
Getting Started
Create a Simple Bot
SKILLS
Storyboard
Dialog Tasks
Introduction
Dialog Builder (New)
Dialog Builder (Legacy)
User Intent Node
Dialog Node
Entity Node
Supported Entity Types
Composite Entities
Supported Colors
Supported Company Names
Form Node
Logic Node
Message Nodes
Confirmation Nodes
Bot Action Node
Service Node
Custom Authentication
2-way SSL for Service nodes
Script Node
Agent Transfer Node
WebHook Node
Grouping Nodes
Connections & Transitions
Manage Dialogs
User Prompts
Knowledge Graph
Terminology
Building
Generation
Importing and Exporting
Analysis
Knowledge Extraction
Train
Build
Alert Tasks
Introduction
Ignore Words and Field Memory
How to Schedule a Smart Alert
Small Talk
Digital Views
Introduction
How to Configure Digital Views
Digital Forms
Overview
How to Configure Digital Forms
NATURAL LANGUAGE
Overview
Machine Learning
Introduction
Model Validation
Fundamental Meaning
Introduction
NLP Guidelines
Knowledge Graph
Traits
Introduction
How to Use Traits
Ranking and Resolver
Advanced NLP Configurations
INTELLIGENCE
Overview
Context Management
Overview
Session and Context Variables
Context Object
How to Manage Context Switching
Manage Interruptions
Dialog Management
Sub Intents & Follow-up Intents
Amend Entity
Multi-Intent Detection
Sentiment Management
Tone Analysis
Sentiment Management
Event Based Bot Actions
Default Conversations
Default Standard Responses
TEST & DEBUG
Talk to Bot
Utterance Testing
Batch Testing
Record Conversations
Conversation Testing
CHANNELS
PUBLISH
ANALYZE
Overview
Dashboard
Custom Dashboard
Overview
How to Create Custom Dashboard
Conversation Flows
NLP Metrics
ADVANCED TOPICS
Universal Bots
Overview
Defining
Creating
Training
Customizing
Enabling Languages
Store
Smart Bots
Defining
koreUtil Libraries
SETTINGS
Authorization
Language Management
PII Settings
Variables
Functions
IVR Integration
General Settings
Management
Import & Export
Delete
Bot Versioning
Collaborative Development
Plan Management
API GUIDE
API Overview
API List
API Collection
SDKs
SDK Overview
SDK Security
SDK App Registration
Web SDK Tutorial
Message Formatting and Templates
Mobile SDK Push Notification
Widget SDK Tutorial
Widget SDK – Message Formatting and Templates
Web Socket Connect & RTM
Using the BotKit SDK
Installing
Configuring
Events
Functions
BotKit SDK Tutorial – Agent Transfer
BotKit SDK Tutorial – Flight Search Sample Bot
Using an External NLP Engine
ADMINISTRATION
HOW TOs
Create a Simple Bot
Create a Banking Bot
Transfer Funds Task
Update Balance Task
Context Switching
Using Traits
Schedule a Smart Alert
Configure UI Forms
Add Form Data into Data Tables
Configuring Digital Views
Add Data to Data Tables
Update Data in Data Tables
Custom Dashboard
Custom Tags to filter Bot Metrics
Patterns for Intents & Entities
Build Knowledge Graph
Global Variables
Content Variables
Using Bot Functions
Configure Agent Transfer
RELEASE NOTES

シンプルなBotの作成

Kore.ai Botプラットフォームへの登録が完了したら、次のステップはBotを作成することです。Botを作成する前に、こちらのリンクからBot作成の基本を学ぶことをお勧めします。

この文書に記載されているステップに従って、自分のペースでBotを作成することができます。または、ガイド付きヘルプを使用して、Botの作成プロセスをステップごとに行うことができます。

ガイド付きヘルプにアクセスするには、以下のステップに従ってください。

  1. Botアカウントにログインします。
  2. Botビルダーのランディングページで、右上のヘルプをクリックします。
  3. ページヘルプウィンドウで、ガイド付きヘルプで「Hello world」Botを構築するの隣にあるガイド付きヘルプをクリックします。
  4. ユースケースのリストが表示されます。開始をクリックして、ユースケースを進めます。
  5. この文書は、ダイアログタスクBot(フライト状況のBot)を使用する際に役立ちます。

Botの概要

このBotは、ユーザーの選択に応じて、ロサンゼルス国際空港のフライトの発着状況を表示します。

このBotは以下のことができます。

  • 到着または出発について知りたいかどうかをユーザーに尋ねる。
  • APIにサービスコールを行い、空港を出発または空港に到着するフライト情報を取得する。
  • ユーザーによる到着または出発の選択に応じて便名を表示する。
  • ユーザーにフライト番号の選択を要求する。
  • 選択したフライトのステータスの詳細を表示する。
  • エラーに対処する。

Botの構築

標準Botを作成することができます。作成するには、以下のステップに従ってください。

  1. Kore.ai Botプラットフォームのアカウントにログインします。
  2. Botのランディングページで、右上の+新しいBotをクリックします。
  3. 新しいBotの作成ウィンドウで、Botの詳細を入力します。
    • Bot名 – Botに空港Botなどの名前をつけます。入力した名前がすでに使用されている場合は、他のものを試してみてください。
    • デフォルトのBot言語ドロップダウンリストから英語を選択し、Botタイプドロップダウンリストから標準ボットを選択します。
  4. 作成をクリックします。

ダイアログタスクの作成

Botの作成後、Botのサマリーページに移動します。最初のステップは、インテントダイアログを追加することです。インテントダイアログは、ユーザーとBot間の会話フローの最初のステップです。

  1. タスクウィジェットで、+新しいタスクをクリックし、ダイアログタスクを選択します。
  2. Botタスクページで、以下の詳細を入力します。
    • インテント名 – インテント名を入力します。これはダイアログのトリガーとなるフレーズです。インテント名は、フライト状況を取得するのように3~4語以内のシンプルなものにしてください。
    •  その他のオプションでは、説明やその他のダイアログ関連の詳細を追加することができます。ここではデフォルトの設定のままにしておきましょう。
  3. 作成して続行をクリックします。
  4. ユーザーインテントウィンドウでは、コンポーネントプロパティ タブがデフォルトで選択されています。デフォルトのプロパティのままにしておきましょう。
  5. ユーザーインテントウィンドウを閉じます。

ユーザー選択エンティティノードの作成

エンティティノードは通常、ユーザーから情報を収集するために使用されます。到着または出発の詳細についてのユーザーの選択を取得するために使用してみましょう。

  1. ユーザーインテントノードの横にあるアイコンをクリックします。
  2. エンティティおよび新しいエンティティノード+を選択します。
  3. エンティティウィンドウでは、コンポーネントプロパティタブがデフォルトで選択されています。
  4. 一般設定セクションで以下の詳細を入力します。
    • 名前選択
    • 表示名選択
    • タイプ: ドロップダウンリストから項目リスト(列挙)を選択します。お客様は、ユーザーが選択可能な値のリストを提供することができます。値のリストを追加するには、
        • フィールドの横にある設定アイコンをクリックします。
        • 静的リストオプションを選択します。
        • 使用するキーと値セクションで、表示名到着および出発として別々の行に入力します。列と同義語列は自動挿入されるため、そのままにしておきます。
        • 保存をクリックします。
        • エンティティウィンドウに戻ります。
    • ユーザープロンプトセクションで、以下のテキストを入力します。
      こんにちは{{context.session.UserContext.firstName}}。*ロサンゼルス国際空港*へようこそ。フライトの発着情報を取得いただけます。ご希望のフライトを選択してください。
      :コンテキスト変数は、ユーザーの名字を取得します。また、空港名が太字で表示されるようにマークダウンを使用しています。
    • 入力をクリックして保存します。
    • 値のリストを表示セクションで、はい。デフォルトメッセージにチャネル固有の標準フォーマットを使用して、利用可能な値の一覧をエンドユーザーに表示しますオプションを選択します。これにより、サポートされているチャネルのボタンテンプレートとして値のリストが表示されます。
  5. エンティティウィンドウを閉じます。

サービスノードの作成

サービスノードを使用すると、バックエンドのAPIコールを行うことができます。ここでは、APIを呼び出し、ロサンゼルス国際空港の発着便のフライト情報を取得するためにサービスノードが使用されます。このチュートリアルでは、ダミーのAPI設定を使用します。

  1. 優先エンティティノードの横にあるアイコンをクリックします。
  2. サービス > 新しいサービスノード+を選択します。
    • サービスノードは、バックエンドのAPIコールを行い、ロサンゼルス国際空港のフライトの出発および到着情報を取得するために使用されます。
  3. サービス]ウィンドウでは、コンポーネントプロパティタブがデフォルトで選択されています。
  4. 一般設定セクションで、以下の詳細を入力します。
    • 名前フライト情報の取得
    • 表示名フライト情報の取得
    • サービスタイプカスタムサービス
    • タイプウェブサービス
    • サブタイプREST
    • リクエスト定義セクションで、リクエストの定義をクリックします。
    • リクエストの定義ページで以下の詳細を入力します。
      • リクエストタイプ取得
      • リクエストURLhttp://5e85a56644467600161c6579.mockapi.io/FlightDetails
        このAPIはAuthパラメータやHeaderパラメータを必要としません。
      • リクエストのテストタブをクリックします。
        • 右上のテストをクリックします。
        • テストが完了するのを待って、ステータスコード200を取得します。
        • サンプル応答として保存をクリックします。
        • 保存をクリックします。

  5. サービスウィンドウを閉じます。

フライト選択エンティティノードの作成

このエンティティノードは、ユーザーが状況の詳細を知りたいフライト番号を取得するためのものです。

  1. フライト情報の取得サービスノードの横にあるアイコンをクリックします。
  2. エンティティ > 新しいノード+を選択します。
    • エンティティノードは、ユーザーが選択したフライト番号を取得する必要があります。
  3. エンティティウィンドウでは、コンポーネントプロパティタブがデフォルトで選択されています。
  4. 一般設定セクション、以下の詳細を入力します。
    • 名前フライトの選択
    • 表示名フライトの選択 
    • タイプ文字列(ユーザーは、以下の手順でAPI文字列出力を値のリストに変換するカスタムスクリプトを作成することができます。これは使用するダミーAPIの要件です。)
  5. ユーザープロンプトセクションで、以下のテキストを入力します。
    フライト番号を入力してください。

    • プロンプトの管理:ユーザーは、Web SDK チャネルの特定のプロンプトを定義することができます。
    • プロンプトメッセージの管理をクリックします。
    • プロンプトメッセージの追加をクリックします。
    • 新しいプロンプトメッセージウィンドウで、チャネルドロップダウンリストからウェブ/モバイルクライアントを選択します。
    • メッセージセクションで、JavaScriptタブをクリックします。
    • 以下のJavaScriptを入力します。JavaScriptはAPIコールから出力された文字列からユーザーの選択と一致するフライト番号を抽出し、クイックリプライ形式で表示します。
      var data = context.Fetchflightdetails.response.body.details;
      context.flights = [];
      context.info;
      var msg;
      for (var i = 0; i < data.length; i++)
      {
          if (context.entities.Preference == data[i].Type)
          {
              var details = {
                  "Airlines" : data[i].Airlines,
                  "FlightNo" : data[i].FlightNo,
                  "Airport" : data[i].Airport,
                  "AirportName" : data[i].AirportName,
                  "Time" : data[i].Time
              };
              context.flights.push(details);
          }
      }
      var message = {
          "type" : "template",
          "payload" : {
             "template_type" : "quick_replies",
             "text" : "こちらが" + context.entities.Preference + "本日のロサンゼルス国際空港のフライト情報です。フライト番号を選択して詳細をご確認ください。",
             "quick_replies" : []
          }
      };
      for (i=0; i < context.flights.length; i++)
      {
         var replies = {
              "content_type":"text",
              "title" : context.flights[i].FlightNo,
              "payload" : context.flights[i].FlightNo
          };
      message.payload.quick_replies.push(replies);
      }
      return JSON.stringify(message);
  6. 保存をクリックします。
  7. ダイアログビルダーに戻り、エンティティウィンドウを閉じます。

スクリプトノードの作成

スクリプトノードは、ダイアログタスクでカスタムJavaScriptを記述するために使用されます。ユーザーはスクリプトを使用して選択したフライト情報を抽出することができます。後日、ユーザーはこのスクリプトにその他の機能を追加することができます。

  1. フライトエンティティの選択ノードの横にあるアイコンをクリックします。
  2. スクリプト > 新しいスクリプトノード+を選択します。
  3. スクリプトウィンドウでは、コンポーネントプロパティタブがデフォルトで選択されています。
  4. 一般設定セクションで、以下の詳細を入力します。
    • 名前フライトの確認
    • 表示名フライトの確認
  5. スクリプトの定義セクションで、スクリプトを定義するをクリックします。
  6. スクリプトの追加ダイアログボックスで、以下のJavaScriptをコピーします。このコードは、選択したフライト番号の詳細を抽出します。
    context.details;
    var x = context.flights.length;
    for (var l = 0; l < x; l++)
    {
        if (context.entities.SelectFlight == context.flights[l].FlightNo)
        {
             context.details = {
                "Airlines" : context.flights[l].Airlines,
                "FlightNo" : context.flights[l].FlightNo,
                "Airport" : context.flights[l].Airport,
                "AirportName" : context.flights[l].AirportName,
                "Time" :context.flights[l].Time
            };
            break;
        }
    }
  7. 保存をクリックします。
  8. スクリプトウィンドウを閉じます。

メッセージノードの作成

メッセージノードは、Botからユーザーへのメッセージを表示するために使用されます。ユーザはメッセージノードを使用して、好みに応じて適切なフライト情報を表示することができます。

  1. フライトスクリプトの確認ノードの横にあるアイコンをクリックします。
  2. メッセージ > 新しいメッセージノード+を選択します。
  3. メッセージウィンドウでは、コンポーネントプロパティタブがデフォルトで選択されています。
  4. 一般設定の項目で、以下の詳細を入力します。
    • 名前フライト情報
    • 表示名フライト情報 
  5. ボットの応答セクションで、以下のテキストを入力します。
    こちらがお客様のフライト情報です。
  6. 入力をクリックして保存します。
  7. プロンプトの管理:ユーザーは、Web SDKチャネルの特定のプロンプトを定義することができます。
    • 応答の管理をクリックします。
    • Botの応答の管理ページで、Botの応答を追加するをクリックします。
    • チャネルドロップダウンリストからウェブ/モバイルクライアントを選択します。
    • メッセージセクションでJavaScriptタブをクリックします。
    • 以下のJavaScriptをコピーします。フライト情報を形式で表示するためにJavaScriptを記述しています。
      var message = {
       "type": "template",
       "payload": {
       "template_type": "mini_table",
       "layout": "horizontal",
       "text":"フライト" + context.entities.Preference + "の情報" ,
       "要素": [
       {
       "primary":[["Flight No"], [context.details.FlightNo, "right"]],
       "additional":[["Airlines", context.details.Airlines],["From",context.details.Airport],["Time",context.details.Time],["Remarks","On Time"]]
       }
       ]
      }
      };
      print(JSON.stringify(message));
    • 保存をクリックします。
  1. メッセージウィンドウに戻ります。
  2. メッセージウィンドウで接続タブをクリックします。
    • ドロップダウンリストから、デフォルトの接続を接続なしからダイアログの終了に変更します。
    • 保存をクリックします。
  3. メッセージウィンドウを閉じます。

Botのテスト

ダイアログタスクのテストには、右下のBotと話すオプションを使用することができます。

  1. 「フライト状況を教えてください。」という発話(インテント名)を入力します。
  2. Botの指示に従います。
    • 出発/到着を選択
    • フライト番号を選択
    • 表形式で表示されるフライト情報を確認

イベントの追加

現在、Botは会話の開始時にユーザー入力が行われるのを待っています。Botは会話の開始時にユーザーを誘導することもできます。このため、ウェブ/モバイルSDKから新しい接続が確立されるたびにこのタスクを開始するイベントハンドラを追加することができます。

  1. ダイアログビルダーを閉じ、Botのタスクページに移動します。
  2. 左ナビゲーションペインにカーソルを合わせ、自然言語 > デフォルトの会話 > イベントハンドラを選択します。
  3. イベントリストから、接続イベントに対して設定をクリックします。
  4. 接続ウィンドウでは、タスクを開始するオプションがデフォルトで選択されています。
  5. ドロップダウンリストから、フライト状況の取得タスクを選択します。
  6. 保存して有効にするをクリックします。

Botのテスト

ダイアログタスクをテストするには、右下のBotと話すオプションを使用することができます。接続イベントが設定されているため、ダイアログは自動的に開始されます。
Botの指示に従います。

  1. 出発/到着を選択する
  2. フライト番号を選択する代わりに、リストに存在しない番号を手動で入力する
  3. 「申し訳ありませんが、何らかのエラーが発生したためタスクを破棄しました。再試行してください。」のような一般的なメッセージが表示されます。

次のステップでは、これを修正する方法について説明しています。

スクリプトノードの修正

文字列タイプがフライトの選択エンティティで使用されているため、ユーザーがリストから選択せずに誤ったフライト番号を手動で入力してしまったというシナリオを処理することができます。これは、接続に基づいて適切なメッセージを表示することで対応できます。
このステップでは、先に保存したスクリプトを修正して、ユーザー入力の確認を追加します。

  1. ダイアログビルダーのページを開きます。これは以下のいずれかの方法により行えます。
    • 左ナビゲーションペインから、Botタスクをクリックし、フライト状況の取得タスクを選択します。
    • 左ナビゲーションペインから、ダッシュボード > Botサマリーをクリックし、フライト状況の取得タスクを選択します。
  2. フライトスクリプトの確認ノードを選択します。
  3. フライトスクリプトの確認ウィンドウのスクリプト定義セクションで、スクリプトの定義をクリックします。
  4. スクリプトの追加ダイアログボックスで、以下のJavaScriptをコピーし、既存のコードを置き換えます。ユーザーが入力したフライト番号がAPIサービスコールで返された入力と一致した場合に設定する有効なタグを追加することができます。
    context.valid = false;
    context.details;
    var x = context.flights.length;
    for (var l = 0; l < x; l++)
    {
        if (context.entities.SelectFlight == context.flights[l].FlightNo)
        {
             context.valid = true;
             context.details = {
                "Airlines" : context.flights[l].Airlines,
                "FlightNo" : context.flights[l].FlightNo,
                "Airport" : context.flights[l].Airport,
                "AirportName" : context.flights[l].AirportName,
                "Time" :context.flights[l].Time
            };
            break;
        }
    }
    if (context.valid === false)
    {
        delete context.entities.SelectFlight;
    }
  5. フライトスクリプトの確認ウィンドウを閉じます。

条件付きフローの作成

以下は、フライトスクリプトの確認ノードから条件付きフローを追加するステップです。このスクリプトノードから新しいメッセージノードへの接続を確立します。これは、Botからユーザーにエラーメッセージを表示し、再度フライト番号を選択するようにリダイレクトするためです。

エラーメッセージの作成

  1. フライト スクリプトの確認ノードにカーソルを合わせます。
  2. ノード上にアイコンの配列が表示されます。
    • アイコンをクリックすると、新しい接続が作成されます。この新しい接続から、新しいBotメッセージノードを作成します。
    • メッセージ > 新しいメッセージノード+を選択します。
    • メッセージウィンドウでは、コンポーネントプロパティタブがデフォルトで選択されています。
    • 一般設定の項目で、以下の詳細を入力します。
      • 名前エラーメッセージ
      • 表示名エラーメッセージ 
    • ボットの応答セクションで、以下のテキストを入力します。
      入力されたフライト番号が間違っています。もう一度やり直してください。
    • 入力をクリックして保存します。
    • 接続タブをクリックします。
    • ドロップダウンリストから、デフォルトの接続を接続なしからフライトの選択に変更します。
    • 保存をクリックします。
  3. エラーメッセージウィンドウを閉じます。

フライトの確認スクリプトの接続

  1. フライトの確認のスクリプトノードをクリックします。
  2. フライトスクリプトの確認ウィンドウで、接続タブをクリックします。
  3. +IFを追加をクリックします。
  4. IFセクションで、
    • コンテキストを選択します。
    • IF条件に、確認と入力します。
    • Equalsとして演算子を選択します。
    • Trueとして値を入力します。
    • この条件が真の場合、ダイアログは フライト情報に移動します。
  5. ELSEセクションで、
    • この条件が偽の場合、ダイアログは エラーメッセージに移動します。
  6. 保存をクリックします。
  7. フライトスクリプトの確認ウィンドウを閉じます。

Botのテスト

ダイアログタスクをテストするには、右下のBotと話すオプションを使用します。接続イベントが設定されているため、ダイアログが自動的に開始されます。別の方法として、「フライト状況を教えて下さい。」のような発話(インテント名)を入力しても構いません。
Botの指示に従います。

  1. 出発/到着を選択します。
  2. 無効なフライト名を入力します。
  3. 適切なエラーメッセージが表示され、再度フライト番号を入力するように促されます。
  4. フライト番号を選択します。
  5. フライト情報を表形式で確認することができます。

これでお客様の初めてのBotの作成およびテストは完了です。

次のステップは以下の通りです。

  • 「フライト状況を知りたいのですが。」、「QR040の状態は?」のようなユーザーの様々な発話に応答できるようにBotをトレーニングします。
    これはBotをトレーニングするから行うことができます。
  • ユーザーがアクセスできるよう、チャネルを有効にしてBotを公開します。詳細はこちらを参照してください。
OVERVIEW
Virtual Assistants
Kore.ai Platform
Key Concepts
Natural Language Processing (NLP)
Accessing Platform
VIRTUAL ASSISTANTS
Virtual Assistant Builder
Virtual Assistant Types
Getting Started
Create a Simple Bot
SKILLS
Storyboard
Dialog Tasks
Introduction
Dialog Builder (New)
Dialog Builder (Legacy)
User Intent Node
Dialog Node
Entity Node
Supported Entity Types
Composite Entities
Supported Colors
Supported Company Names
Form Node
Logic Node
Message Nodes
Confirmation Nodes
Bot Action Node
Service Node
Custom Authentication
2-way SSL for Service nodes
Script Node
Agent Transfer Node
WebHook Node
Grouping Nodes
Connections & Transitions
Manage Dialogs
User Prompts
Knowledge Graph
Terminology
Building
Generation
Importing and Exporting
Analysis
Knowledge Extraction
Train
Build
Alert Tasks
Introduction
Ignore Words and Field Memory
How to Schedule a Smart Alert
Small Talk
Digital Views
Introduction
How to Configure Digital Views
Digital Forms
Overview
How to Configure Digital Forms
NATURAL LANGUAGE
Overview
Machine Learning
Introduction
Model Validation
Fundamental Meaning
Introduction
NLP Guidelines
Knowledge Graph
Traits
Introduction
How to Use Traits
Ranking and Resolver
Advanced NLP Configurations
INTELLIGENCE
Overview
Context Management
Overview
Session and Context Variables
Context Object
How to Manage Context Switching
Manage Interruptions
Dialog Management
Sub Intents & Follow-up Intents
Amend Entity
Multi-Intent Detection
Sentiment Management
Tone Analysis
Sentiment Management
Event Based Bot Actions
Default Conversations
Default Standard Responses
TEST & DEBUG
Talk to Bot
Utterance Testing
Batch Testing
Record Conversations
Conversation Testing
CHANNELS
PUBLISH
ANALYZE
Overview
Dashboard
Custom Dashboard
Overview
How to Create Custom Dashboard
Conversation Flows
NLP Metrics
ADVANCED TOPICS
Universal Bots
Overview
Defining
Creating
Training
Customizing
Enabling Languages
Store
Smart Bots
Defining
koreUtil Libraries
SETTINGS
Authorization
Language Management
PII Settings
Variables
Functions
IVR Integration
General Settings
Management
Import & Export
Delete
Bot Versioning
Collaborative Development
Plan Management
API GUIDE
API Overview
API List
API Collection
SDKs
SDK Overview
SDK Security
SDK App Registration
Web SDK Tutorial
Message Formatting and Templates
Mobile SDK Push Notification
Widget SDK Tutorial
Widget SDK – Message Formatting and Templates
Web Socket Connect & RTM
Using the BotKit SDK
Installing
Configuring
Events
Functions
BotKit SDK Tutorial – Agent Transfer
BotKit SDK Tutorial – Flight Search Sample Bot
Using an External NLP Engine
ADMINISTRATION
HOW TOs
Create a Simple Bot
Create a Banking Bot
Transfer Funds Task
Update Balance Task
Context Switching
Using Traits
Schedule a Smart Alert
Configure UI Forms
Add Form Data into Data Tables
Configuring Digital Views
Add Data to Data Tables
Update Data in Data Tables
Custom Dashboard
Custom Tags to filter Bot Metrics
Patterns for Intents & Entities
Build Knowledge Graph
Global Variables
Content Variables
Using Bot Functions
Configure Agent Transfer
RELEASE NOTES

Create a Simple Bot

After you have signed up with the Kore.ai Bots platform, the next step is to create a bot. Before you create a bot, it is recommended to go through the basics of bot-building from this link.

You can follow the steps given in this document to build the bot at your own pace or use the Guided Help for the step-by-step bot creation process.

To access the Guided Help, follow the below steps:

  1. Log in to your Kore.ai bot’s platform with valid credentials.
  2. On the landing page, click the help icon on the top right.
  3. On the Page Help window, click Guided Help next to Build a ‘Hello world’ bot with guided help.
  4. A list of use cases is displayed. Click Get Started to proceed with a use case.
  5. This document helps you with the Dialog Task Bot (Flight Status Bot).

Bot Overview

This Bot gives you the flight status arriving/departing from Los Angeles International Airport depending upon the user selection.

This Bot can:

  • Ask the user if they want to know about the arrivals or departures.
  • Make a service call to an API to fetch the details of flights arriving and departing out of the airport.
  • Display the flight numbers based on the user preference of Arrival or Departure.
  • Request the user to select a flight number.
  • Display the status details of the selected flight.
  • Handle any errors.

Build the Bot

You can create a Standard Bot. To create, follow the below steps:

  1. Log in to your Kore.ai Bots platform account.
  2. On the Bots landing page, click New Bot on the top-right and select the Start from Scratch option.
  3. On the Create New Bot window, enter the Bot details:
    • Bot Name – Give a name to your Bot. For example, Airport Bot. If the name is already used, try something else.
    • Select English from the Default Bot Language drop-down list and Standard Bot from the Bot Type drop-down list.
  4. Click Create.

Create a Dialog Task

After the Bot creation, you are directed to the Bot Summary page. The first step is to add an Intent Dialog. Intent Dialog is the first step in the user-bot conversation flow.

  1. On the Tasks widget, click + New Task and select Dialog Task.
  2. On the Create Dialog page, enter the following details:
    • Intent Name – Enter the Intent name, this is the phrase that triggers the dialog. The intent name must be simple and not more than 3-4 words. For example, Get flight status.
    •  Under More Options, you can add a description and other dialog-related details. Let us retain the default settings.
  3. Click Proceed.
  4. You will be prompted to Upgrade to Conversation Driven Dialog Builder, select to Upgrade.
    For instructions with the older Dialog Builder, refer here
  5. On the User Intent window, by default, the Conversation Builder panel is displayed.
  6. Close the Conversation Builder window. We will build the dialog task using the dialog builder directly.

Create a User Preference Entity Node

An Entity node is typically used to gather information from the user. Let us use it to capture the user preference of arrival or departure details.

  1. Click the + icon next to the User Intent node.
  2. Select Entity > + New Entity.
  3. You can also drag and drop Entity from the node panel on the left.
  4. Click the newly added Entity node to open the Entity window.
  5. By default, the Component Properties tab is selected.
    1. Under the General Settings section, enter the following details:
      • Name: Preference
      • Display Name: Preference 
      • Type: Select List of Items (enumerated) from the drop-down list. You can provide a list of values that the user can select. To add a list of values,
        • Click the Settings icon next to the field.
        • Select the Static List option.
        • Under the Keys & Values To Use section, enter the Display Name as Arrival and Departure in separate rows. Value and Synonyms columns auto-populates, leave them as is.
        • Click Save.
        • Go back to the Entity window.
    2. Under the User Prompts section, enter the following text:
      Hello {{context.session.UserContext.firstName}}! Welcome to *Los Angeles International Airport*. I can help you with flight Arrival/Departure information. Please select your preference.
      Note: The context variable retrieves the user’s first name. Also, markdown is used for the airport name to appear in bold.
    3. Under the Display List of Values section, select Yes, use channel-specific standard formatting for default messages and show the available list of values to the end-user option. This displays the list of values as a button template in supported channels.
  6. Close the Entity window.

Create a Service Node

A Service Bot Action node allows you to make a backend API call. Here the service node is used to call an API to get flight information for flights From and To LAX airport. In this tutorial, a dummy API setup is used.

  1. Click the + icon next to the Preference Entity node.
  2. Select Bot Action > + New Bot Action.
  3. Under the General Settings section, enter the following details:
    • Name: FlightDetails
    • Display Name: Flight Details
  4. Click the + next to the Bot Action node to expand the Bot Action.
  5. From within the bot action node click +
  6. Select Service > + New service.
    • The service node is used to make a backend API call to get flight information for flights From and To LAX airport.
  7. Click the Service node to open the Service window, by default, the Component Properties tab is selected.
  8. Under the General Settings section, enter the following details:
    • Name: Fetchflightdetails
    • Display Name: Fetch Flight Details
    • Service Type: Custom Service
    • Type: Webservice
    • Sub Type: REST
    • Under the Request Definition section, Click DEFINE REQUEST.
    • On the Define Request page, enter the following details:
      • Request TypeGET
      • Request URLhttp://5e85a56644467600161c6579.mockapi.io/FlightDetails
        This API does not require any Auth or Header Parameters.
      • Click the Test Request tab.
        • Click Test on the top-right.
        • Wait for the test to complete and you get a Status Code 200.
        • Click Save as Sample Response.
        • Click Save.

    • Return to the dialog builder
  9. Under the Connections section, set the Default Connection Rule to End of Bot Action
  10. Close the Service window.
  11. Collapse the Bot Action node.

Create a Flight Selection Entity Node

This Entity node is to capture the Flight Number for which the user wants the status details.

  1. Click the + icon next to the Flight Details Bot Action node.
  2. Select Entity > New entity node +.
    • The Entity node is required to capture the flight number selected by the user.
  3. On the Entity window, by default, the Component Properties tab is selected.
  4. Under the General Settings section, enter the following details:
    • Name: SelectFlight
    • Display Name: Select Flight 
    • Type: String (users can write a custom script to convert the API string output to a list of values in the following steps, this is the requirement of the dummy API used)
  5. Under the User Prompts section, enter the following text:
    Please provide the flight number.

    • Manage: Users can define a specific prompt for the Web SDK channel.
    • Click MANAGE.
    • Click ADD PROMPT MESSAGE.
    • On the New Prompt Message window, select Web/Mobile client from the Channel drop-down list.
    • Under the Message section, click the JavaScript tab.
    • Enter the following JavaScript. The JavaScript extracts flight numbers matching user preference from the string output from API call and displays them in the Quick Reply format.
      var data = context.Fetchflightdetails.response.body.details;
      context.flights = [];
      context.info;
      var msg;
      for (var i = 0; i < data.length; i++)
      {
          if (context.entities.Preference == data[i].Type)
          {
              var details = {
                  "Airlines" : data[i].Airlines,
                  "FlightNo" : data[i].FlightNo,
                  "Airport" : data[i].Airport,
                  "AirportName" : data[i].AirportName,
                  "Time" : data[i].Time
              };
              context.flights.push(details);
          }
      }
      var message = {
          "type" : "template",
          "payload" : {
             "template_type" : "quick_replies",
             "text" : "Here are the flights " + context.entities.Preference + " details for Los Angeles International Airport today. Please select the flight number to see details",
             "quick_replies" : []
          }
      };
      for (i=0; i < context.flights.length; i++)
      {
         var replies = {
              "content_type":"text",
              "title" : context.flights[i].FlightNo,
              "payload" : context.flights[i].FlightNo
          };
      message.payload.quick_replies.push(replies);
      }
      return JSON.stringify(message);
  6. Click Save.
  7. Go back to Dialog Builder and close the Entity window.

Create a Script Node

A Script node is used to write custom JavaScript in the Dialog task. Here, users can use the script to extract the selected flight details. Later, users can add more functionality to this script.

  1. Click the + icon next to the Select Flight Entity node.
  2. Select Bot Action + New Bot Action.
  3. Under the General Settings section, enter the following details:
    • Name: Flight Validation
    • Display Name: Flight Validation 
  4. Click the + next to the Bot Action node to expand the Bot Action.
  5. From within the bot action node click +
  6. Select Script > New script node +.
  7. On the Script window, by default, the Component Properties tab is selected.
  8. Under the General Settings section, enter the following details:
    • Name: ValidateFlight
    • Display Name: Validate Flight 
  9. Under the Script Definition section, click Define Script.
  10. On the Add Script dialog box, copy the following JavaScript. This code extracts the details of the selected flight number.
    context.details;
    var x = context.flights.length;
    for (var l = 0; l < x; l++)
    {
        if (context.entities.SelectFlight == context.flights[l].FlightNo)
        {
             context.details = {
                "Airlines" : context.flights[l].Airlines,
                "FlightNo" : context.flights[l].FlightNo,
                "Airport" : context.flights[l].Airport,
                "AirportName" : context.flights[l].AirportName,
                "Time" :context.flights[l].Time
            };
            break;
        }
    }
  11. Click Save.
  12. Under the Connections section, set the Default Connection Rule to End of Bot Action
  13. Close the Script window.
  14. Collapse the Bot Action node.

Create a Message Node

A Message node is used to display a message from the Bot to the user. Here, users can use the Message node to show appropriate flight details, based on user preference.

  1. Click the + icon next to the Validate Flight Script node.
  2. Select Message > New message node +.
  3. On the Message window, by default, the Component Properties tab is selected.
  4. Under the General Settings section, enter the following details:
    • Name: FlightDetails
    • Display Name: Flight Details 
  5. Under the Bot Responses section, enter the following text:
    Here are your flight details.
  6. Click Enter to save.
  7. Manage Prompts: Users can define a specific prompt for the Web SDK channel.
    • Click Manage.
    • On the Manage Bot Responses page, click ADD BOT RESPONSE.
    • Select Web/Mobile client from the Channel drop-down list.
    • Under the Message section, click the JavaScript tab.
    • Copy the following JavaScript. The JavaScript is written to display the flight details in the Table format.
      var message = {
       "type": "template",
       "payload": {
       "template_type": "mini_table",
       "layout": "horizontal",
       "text":"Flight " + context.entities.Preference + " Information" ,
       "elements": [
       {
       "primary":[["Flight No"], [context.details.FlightNo, "right"]],
       "additional":[["Airlines", context.details.Airlines],["From",context.details.Airport],["Time",context.details.Time],["Remarks","On Time"]]
       }
       ]
      }
      };
      print(JSON.stringify(message));
    • Click Save.
  1. Go back to the Message window.
  2. On the Message window, click the Connections tab.
    • From the drop-down list, change the default connection from Not Connected to End of Dialog.
    • Click Save.
  3. Close the Message window.

Test the Bot

To test the Dialog task, you can use the Talk to bot option at the bottom right.

  1. Enter the utterance (intent name) Get me the flight status.
  2. Follow the Bot instructions:
    • Select Arrival/Departure
    • Select Flight No
    • See the flight details displayed in a tabular format.

Add Events

Currently, the Bot is waiting for user input on the start. Also, the Bot can guide the user at the start of the conversation. For this, you can add an Event Handler to initiate this task every time a new connection is established from the Web/Mobile SDK.

  1. Close the Dialog Builder and go to the Bot Tasks page.
  2. From the Left Navigation pane, and select Intelligence > Events.
  3. From the events list, click Configure against the On Connect event.
  4. On the On Connect window, by default, the Initiate Task option is selected; retain it.
  5. From the drop-down list, select the Get Flight Status task.
  6. Click Save and Enable.

Test the Bot

To test the Dialog task, you can use the Talk to bot option at the bottom right. Since the onConnect event is configured, the dialog is automatically initiated.
Follow the Bot instructions:

  1. Select Arrival/Departure
  2. Instead of selecting Flight No, manually enter a number that does not exist on the list.
  3. You can see a generic message like I am sorry, something went wrong and I had to discard your task. Please retry”.

In the next steps, you can see how to rectify this.

Modify Script Node

As the String type is used in the Select Flight entity, you can handle the scenario that the user, instead of selecting from the list, has manually entered an incorrect flight number. You can do this by displaying an appropriate message based on Connections.
In this step, you can modify the script that you saved earlier to add verification of the user entry.

  1. Open the Dialog Builder page. You can do this either
  2. From the Left Navigation pane, click Conversational Skills -> Dialog Tasks and select the Get Flight Status task.
  3. From the Left Navigation pane, click Summary select the Get Flight Status task.
  4. Select ValidateFlight Script node.
  5. On the Validate Flight Script window, under the Script Definition section, click Edit Script.
  6. On the Add Script dialog box, copy the following JavaScript and replace the existing code. You can add a valid tag to be set when the flight number entered by the user matches an entry returned by the API service call.
    context.valid = false;
    context.details;
    var x = context.flights.length;
    for (var l = 0; l < x; l++)
    {
        if (context.entities.SelectFlight == context.flights[l].FlightNo)
        {
             context.valid = true;
             context.details = {
                "Airlines" : context.flights[l].Airlines,
                "FlightNo" : context.flights[l].FlightNo,
                "Airport" : context.flights[l].Airport,
                "AirportName" : context.flights[l].AirportName,
                "Time" :context.flights[l].Time
            };
            break;
        }
    }
    if (context.valid === false)
    {
        delete context.entities.SelectFlight;
    }
  7. Close the Validate Flight Script window.

Create Conditional Flow

The following are the steps to add the conditional flow from the Validate Flight Script node. A new connection from this Script node to a new Message node is established. This is to display an error message from the Bot to the user and redirect to select the flight number again.

Create Error Message

  1. Hover over the connection between Flight Validation bot action node and Flight Details message node.
  2. You can see Add Node button, click the same.
  3. Create a new Bot message node.
    • Select MessageNew message node +.
    • On the Message window, by default, the Component Properties tab is selected.
    • Under the General Settings section, enter the following details:
      • Name: ErrorMessage
      • Display Name: Error Message 
    • Under the Bot Responses section, enter the following text:
      The Flight number entered is incorrect. Let us start again.

      • Click Enter to save.
    • Click the Connections tab.
    • From the drop-down list, change the default connection from Not Connected to SelectFlight.
    • Click Save.
    • Close the Error Message window.

ValidateFlight Script Connections

  1. Click the Flight Validation bot action node.
  2. On the Flight Validation bot action window, click the Connections tab.
    • Click + ADD IF.
    • Under the IF section,
      • Select Context
      • For If Condition, enter the text as valid.
      • Select the operator as equals.
      • Enter the value as true.
      • If this condition is true, then the dialog goes to FlightDetails.
      • Under the ELSE section,
      • If this condition is false, then the dialog goes to ErrorMessage.
      • Click Save.
      • Close the Validate Flight Script window.

Test the Bot

To test the Dialog task, you can use the Talk to bot option at the bottom right. Since the onConnect event is configured, the dialog is automatically initiated. Alternately, you can always try the following utterance (intent name) Get me the flight status.
Follow the Bot instructions:

  1. Select Arrival/Departure
  2. Enter an invalid flight number.
  3. You can see the appropriate error message and be prompted to enter the flight number again.
  4. Select a flight number.
  5. You can see the flight details in a tabular format.

You have successfully created and tested your first Bot.

The next steps are to:

  • Train your Bot to respond to various user utterances like I want to know the status of a flight, What is the status of QR040? You can achieve this by training your Bot.
  • Enable a channel and publish your Bot for user access. See here for more.