{"id":13403977,"url":"https://github.com/IBM/watson-assistant-slots-intro","last_synced_at":"2025-03-14T08:32:22.056Z","repository":{"id":22720345,"uuid":"96949129","full_name":"IBM/watson-assistant-slots-intro","owner":"IBM","description":"A Chatbot for ordering a pizza that demonstrates how using the IBM Watson Assistant Slots feature, one can fill out an order, form, or profile.","archived":true,"fork":false,"pushed_at":"2023-02-28T16:42:57.000Z","size":10678,"stargazers_count":146,"open_issues_count":10,"forks_count":217,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-12-20T23:35:12.303Z","etag":null,"topics":["bluemix-service","chatbot","conversation-slots","ibm-bluemix","ibmcode","slot","watson-conversation"],"latest_commit_sha":null,"homepage":"https://developer.ibm.com/patterns/assemble-a-pizza-ordering-chatbot-dialog/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IBM.png","metadata":{"files":{"readme":"README-ja.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-07-12T00:40:42.000Z","updated_at":"2024-08-09T14:54:32.000Z","dependencies_parsed_at":"2023-02-13T19:20:45.867Z","dependency_job_id":"366c8bfc-565a-476e-adf9-a7850aa12ae2","html_url":"https://github.com/IBM/watson-assistant-slots-intro","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Fwatson-assistant-slots-intro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Fwatson-assistant-slots-intro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Fwatson-assistant-slots-intro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Fwatson-assistant-slots-intro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IBM","download_url":"https://codeload.github.com/IBM/watson-assistant-slots-intro/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243547549,"owners_count":20308722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluemix-service","chatbot","conversation-slots","ibm-bluemix","ibmcode","slot","watson-conversation"],"created_at":"2024-07-30T19:01:37.143Z","updated_at":"2025-03-14T08:32:21.376Z","avatar_url":"https://github.com/IBM.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/IBM/watson-conversation-slots-intro.svg?branch=master)](https://travis-ci.org/IBM/watson-conversation-slots-intro)\n\n# Watson Assistant のスロット機能を使用してピザ注文チャットボットを作成する\n\n*他の言語で読む: [English](README.md), [한국어](README-ko.md)*\n\n\u003e Watson Conversation は現在、Watson Assistant です。このコードパターンの一部のイメージでは、サービスが Watson Conversation として表示されることがありますが、手順とプロセスは引き続き機能します。\n\nこのコードパターンでは、Watson Assistant スロット機能を使用して、ピザの注文を受け付けるチャットボットを作成します。サイズ、タイプ、トッピングの選択などの必要な情報は、以前のバージョンのアシスタントとは異なり、1つのアシスタントノード内に入力することができます。\n\nこのコード・パターンをひととおり完了すると、以下のスキルを身に付けることができます:\n\n* Node.js と Watson Assistant を利用して単純なチャットボットを作成する\n* Watson Assistant スロットを使用して、必要なデータを入力する\n* スロットのハンドラーを使用して、スロットに当てはまらない会話のフローを処理する\n\n![](doc/source/images/architecture.png)\n\n## Flow\n\n1. ユーザーが、ローカルまたはIBM Cloud上で実行されている Node.js アプリケーションに対話を送信します。\n2. アプリケーションは IBM Watson Assistant サービスにユーザー・メッセージを送信し、進行中のチャットを Web ページに表示します。\n3. Watson Assistantは、スロット機能を使用してピザの注文に必要なフィールドをすべて用意し、返答がアプリケーションを介してユーザーに返されます。\n\n## 含まれるコンポーネント\n\n* [IBM Watson Assistant](https://www.ibm.com/watson/jp-ja/developercloud/conversation.html): 自然言語で対話可能なアプリケーションを、シンプルな開発ツールで迅速に構築します。\n\n## 注目のテクノロジー\n\n* [Node.js](https://nodejs.org/): スケーラブルなアプリケーションを構築するために設計された、非同期のイベント駆動型 JavaScript ランタイムです。\n\n# ビデオを見る\n\n#### Running this application with Cloud Foundry on IBM Cloud\n\n[![](http://img.youtube.com/vi/6QlAnqSiWvo/0.jpg)](https://youtu.be/6QlAnqSiWvo)\n\n#### Running this application in a container with Kubernetes on IBM Cloud\n\n[![](https://i.ytimg.com/vi/G-rESweRG84/0.jpg)](https://youtu.be/G-rESweRG84)\n\n# 手順\n\n## IBM Cloud へのデプロイ\n\n[![Deploy to IBM Cloud](https://bluemix.net/deploy/button.png)](https://bluemix.net/deploy?repository=https://github.com/IBM/watson-conversation-slots-intro)\n\n``Deploy to IBM Cloud`` ボタンをクリックして、``Create`` を実行して [ステップ5](#5-run-the-application) にジャンプ。\n\n**もしくは**\n\n## Run in container\n\n[こちらの手順](doc/source/Container.md) に従い、IBM Cloud 上のコンテナで実行。\n\n**もしくは**\n\n## ローカル環境で実行\nステップ1-5を実行:\n\n1. [リポジトリをクローンする](#1-clone-the-repo)\n2. [IBM Cloud サービスを作成する](#2-create-ibm-cloud-services)\n3. [IBM Cloud サービスの資格情報を入手し、.env ファイルに記載する](#3-get-ibm-cloud-services-credentials-and-add-to-env-file)\n4. [Watson Assistant を構成する](#4-configure-watson-conversation)\n5. [アプリケーションの実行](#5-run-the-application)\n\n\u003ca name=\"1-clone-the-repo\"\u003e\u003c/a\u003e\n### 1. リポジトリをクローンする\n\n`watson-conversation-slots-intro` リポジトリをローカル環境にクローンします。ターミナルで以下を実行:\n\n```\n$ git clone https://github.com/ibm/watson-conversation-slots-intro\n```\n\nAssistant インテント、エンティティ、ダイアログ ノードをアップロードするには、[`data/watson-pizzeria.json`](data/watson-pizzeria.json) ファイルを使用します。\n\n\u003ca name=\"2-create-ibm-cloud-services\"\u003e\u003c/a\u003e\n### 2. IBM Cloud サービスを作成する\n\n以下のサービスを作成し、`wcsi-conversation-service` という名前にします:\n\n  * [**Watson Assistant**](https://console.ng.bluemix.net/catalog/services/conversation)\n\n\u003ca name=\"3-get-ibm-cloud-services-credentials-and-add-to-env-file\"\u003e\u003c/a\u003e\n### 3. IBM Cloud サービスの資格情報を入手し、.env ファイルに記載する\n\nIBM Cloud サービスを作成する際には、サービス資格情報を作成する必要があります。使用しているリージョンに基づいて、IAM (Identity Access and Management) またはユーザー名/パスワードベースの資格情報を取得できます。\n\n最初に、`watson-conversation-slots-intro/env.sample` ファイルを ``watson-conversation-slots-intro/.env`` ファイルにリネームします。\n\n* IBM Watson Assistant のサービス資格情報が以下のようにユーザー名/パスワードに基づいている場合は、ユーザー名、パスワード、および workspace_id を入力し、IAM 資格情報部分をコメントアウトします。\n![](doc/source/images/WatsonCred1.png)\n\n```\nWORKSPACE_ID=\u003cput workspace id here\u003e\n\n# Watson Assistant authentication using username/password authentication\nCONVERSATION_USERNAME=\u003cput assistant username here\u003e\nCONVERSATION_PASSWORD=\u003cput assistant password here\u003e\n\n# Watson Assistant Authentication using IAM\n#CONVERSATION_APIKEY=\u003cput assistant IAM apikey here\u003e\n#CONVERSATION_URL=\u003cput assistant url here\u003e\n```\n\n* IBM Watson Assistant のサービス資格情報が以下のように IAM ベースである場合は、IAM apikey、url、workspace_idを入力し、ユーザー名/パスワードの部分をコメントアウトします。\n![](https://github.com/IBM/pattern-images/raw/master/watson-assistant/watson_assistant_api_key.png)\n\n```\nWORKSPACE_ID=\u003cput workspace id here\u003e\n\n# Watson Assistant authentication using username/password authentication\n#CONVERSATION_USERNAME=\u003cput assistant username here\u003e\n#CONVERSATION_PASSWORD=\u003cput assistant password here\u003e\n\n# Watson Assistant Authentication using IAM\nCONVERSATION_APIKEY=\u003cput assistant IAM apikey here\u003e\nCONVERSATION_URL=\u003cput assistant url here\u003e\n```\n\n\n\u003ca name=\"4-configure-watson-conversation\"\u003e\u003c/a\u003e\n### 4. Watson Assistant を構成する\n\n**Watson Assistant** ツールを起動します。右にある `import` アイコンボタンを使用します\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"50%\" height=\"50%\" src=\"doc/source/images/import_conversation_workspace.png\"\u003e\n\u003c/p\u003e\n\nローカルにクローンしたリポジトリから [`data/watson-pizzeria.json`](data/watson-pizzeria.json) ファイルを探し、`Import` を選択してください。新しいワークスペースのコンテキストメニューをクリックし、`View details` を選択して `Workspace ID` を探します。\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"doc/source/images/open_conversation_menu.png\"\u003e\n\u003c/p\u003e\n\n表示された `Workspace ID` の値を `.env` ファイルの `WORKSPACE_ID` 部分に記入してください。\n\n\u003ca name=\"5-run-the-application\"\u003e\u003c/a\u003e\n### 5. アプリケーションの実行\n\n#### Deploy to IBM Cloud ボタンを使用したのであれば...\n\nもしあなたが ``Deploy to IBM Cloud`` を使用したのであれば、設定は自動で実施されています。\n\n#### もしあなたがアプリをローカル環境で実行した場合は...\n\nターミナルで以下のコマンドを実行して依存するモジュールを導入し、アプリケーションの開始します:\n```\n$ npm install\n$ npm start\n```\n\n# Assistant スロットに関する検討\n\nスロットの使用することで、Watson Assistant ダイアログでロジックを実装するために必要なノードの数を削減することができます。 古いメソッドを使った部分的な会話ダイアログです:\n\n![](doc/source/images/pizzaOldWay.png)\n\nそして、ここには、上記のすべてのロジックを1つのノードで実現した、スロットを使用したより完全なダイアログがあります！\n\n![](doc/source/images/pizzaNewWay.png)\n\nダイアログを開くと、次のように表示されます:\n\n![](doc/source/images/pizzaDialogBegin.png)\n\n各スロットは、チャットボックスに入れるフィールドを表します: ``pizza_size``、``pizza_type``、``pizza_topings`` です。関連する変数 (``$ pizza_size``、``$ pizza_type``など) に対し、それらの値が設定されていない場合は、上から順に、すべてに値が入力されるまでプロンプトが表示され続けます。\n\n設定 ![アイコン](doc/source/images/pizzaGearIcon.png) をクリックして、更に機能を追加してみましょう:\n\n![](doc/source/images/pizzaConfig3pizza_toppingsTop.png)\n\nここでは、このスロットが満たされたとき (Found) に、応答を追加できます。\nロジックは1つのトッピングに使用できます:\n\n![](doc/source/images/pizzaConfig3Pizza_toppingsMid1ingredient.png)\n\nまたは2つ以上のトッピングが指定されている場合:\n\n![](doc/source/images/pizzaConfig3Pizza_toppingsMidBotGreater1.png)\n\n\"Any extra toppings?\" (トッピングを追加しますか？) という質問に \"yes\" または \"no\" と答えた場合のためのロジックを追加しました。\n\n![](doc/source/images/pizzaConfig3NewNotFoundconfirm.png)\n\n3点ドット ![アイコン](doc/source/images/pizza3circles.png) をクリックすると、json 形式でダイレクトに編集できます:\n\n![](doc/source/images/pizzaConfig3NotFoundJson.png)\n\nトッピングが不要ということですので、ここでは、コンテキストの {\"pizza_topings\"} フィールドに、空の値を設定しました。このスロットを埋めることでループを終了させることができます。\n\n最後に、スロット全てがいっぱいになった時のための応答を追加します:\n\n![](doc/source/images/pizzaOrderFinish1.png)\n\n配列のサイズが0以上であること (size\u003e0) を検出することによって、\"pizza_topings\" (トッピング) があるケースから始めます。ここでは、オプションの \"pizza_place\" スロットがいっぱいになった場合を最初に処理し、それから、そうでないケースを処理します。\n\n![](doc/source/images/pizzaOrderFinish2.png)\n\n最後に、プロンプトに対するユーザーの回答が見つからない場合のハンドラを追加します。\"help\" と \"reset\" という意図のハンドラがあります。\n\n![](doc/source/images/pizzaHandleHelp.png)\n\n![](doc/source/images/pizzaHandlerReset.png)\n\n\"reset\" を処理するときに json を直接編集することに注意してください。この記述は、すべてのフィールドを null に設定して、処理を再開します。\n\n# Assistant の例\n\n今回のサンプルとの会話と、関連するjsonを見てみましょう。\nあなたの Watson Pizzeria が動作している状態で、ダイアログを開始して、ピザボットに「大きなピザを欲しい」と言ってみましょう。\n\n![](doc/source/images/pizzaEX1orderLarge.png)\n\n`User Input` はあなたの入力を示す \"input\"{\"text\"} フィールドと、主に Assistant が内部状態を維持し管理するための \"context\" フィールドを示しています。\n下にスクロールして `Watson Understands` と `intents` を見てみましょう：\n\n![](doc/source/images/pizzaEX2WatsonUnderstandsOrderSize.png)\n\n\"order\" のインテント (意図) が検出されることに注意してください。\nエンティティ \"pizza_size\" は、(large という値が) 記入されたスロットになりました。\n2つの必須スロット \"pizza_type\" と \"pizza_toppings\" がまだ残っています。\nユーザーが、全てのスロットの入力を完了するまで、プロンプトが表示され続けます:\n\n![](doc/source/images/pizzaEX3fillSlots.png)\n\nこれで全ての必須スロットへの入力が実施されました:\n\n![](doc/source/images/pizzaEX4slotsFilled.png)\n\nWatson Pizzeria に、「そのピザをレストランで食べたかった」と伝えたいのですが？\n遅すぎます！\n\"pizza_place\" のスロットはオプションなので、ユーザーにはそのプロンプトが表示されません。\n必要なスロットがいっぱいになると、\"Pizza Ordering\" ダイアログ・ノードを終了します。\n\nユーザーはオプションのスロットに先に入力する必要があります。\n\"reset\" をタイプしてもう一度開始し、\"to eat there...\" というフレーズを追加して会話をテストします:\n\n![](doc/source/images/pizzaEX5eatThere.png)\n\n今度はちゃんと、このレストランでピザを食べられますね。\n\n# Troubleshooting\n\n* Cloud Foundry の `cf push` コマンドによるデプロイの際、以下のエラーが表示された場合:\n\n``FAILED\nCould not find service \u003cWatson_service\u003e to bind to \u003cIBM_Cloud_application\u003e``\n\nあなたのサービスに `wcsi-conversation-service` という名前をつけたのなら、これはうまくいくはずです。\n`cf push` を使うと、マニフェスト `manifest.yml` ファイルにリストされているサービスにバインドしようとします。\n\nしたがって、これを動作させるには2つの方法があります:\n\n* マニフェスト内の名前と一致するように、IBM Cloud サービスの名前を変更します。\n* マニフェスト内の名前を、IBM Cloudサービスの名前と一致するように変更します。\n\n\u003eノート: `Deploy to IBM Cloud` ボタンは、その場の情報をもとに (正しい名前で) サービスを作成することで、この問題を解決します。\n\n# ライセンス\n\n[Apache 2.0](LICENSE)\n\n# リンク\n\n* [YouTube 上のデモ](https://youtu.be/6QlAnqSiWvo)\n* [IBM Watson Assistant ドキュメント](https://console.bluemix.net/docs/services/conversation/dialog-build.html#dialog-build)\n* [IBM Watson Assistant Slots コードパターンに関するブログ](https://developer.ibm.com/code/2017/09/19/managing-resources-efficiently-watson-conversation-slots/)\n\n# もっと詳しく知る\n\n* **Artificial Intelligence コードパターン**: このコードパターンを気に入りましたか？ [AI Code コードパターン](https://developer.ibm.com/jp/technologies/artificial-intelligence/) から関連パターンを参照してください。\n* **AI and Data コードパターン・プレイリスト**: コードパターンに関係するビデオ全ての [プレイリスト](https://www.youtube.com/playlist?list=PLzUbsvIyrNfknNewObx5N7uGZ5FKH0Fde) です。\n* **With Watson**: [With Watson プログラム](https://www.ibm.com/watson/jp-ja/with-watson/) は、自社のアプリケーションに Watson テクノロジーを有効的に組み込んでいる開発者や企業に、ブランディング、マーケティング、テクニカルに関するリソースを提供するプログラムです。\n* **Kubernetes on IBM Cloud**: [IBM Cloud の Kubernetes と Docker](https://www.ibm.com/cloud-computing/bluemix/containers) の力を組み合わせてアプリを配信する。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIBM%2Fwatson-assistant-slots-intro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIBM%2Fwatson-assistant-slots-intro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIBM%2Fwatson-assistant-slots-intro/lists"}