ServiceNowのOutbound REST MessageでWatson Assistant APIを起動する


概要

IBMのWatson AssistantによるChat BOT作成のために作成したWatson Assistantでユーザーまたは部門を追加するチャットボットを作成するをServiceNowのOutbound REST Messageを使用して起動する。

前提条件

IBM Watson Assistant APIを使用するには、事前にIBM Bluemixへのアカウント登録と、Watson AssistantのLight版(無料版)の利用登録と、AssistantのWorkspaceの作成が必要だ。
AssistantのWorkspaceの作成方法については、Watson Assistantでユーザーまたは部門を追加するチャットボットを作成するが参考になる。

バージョン

ServiceNow : KINGSTONE
Watson Assistant API : 2018-02-16

手順

ServiceNowでRest Messageの作成

ServiceNowのStudioのCreate Applicatio Fileで「Outbound Integrations」の「REST Message」を選択してCreateをクリックする。

Nameは任意の名前を入力し、End PointにはWatson Assistant APIにアクセスする下記のURLを入力する。

https://gateway.watsonplatform.net/assistant/api/v1/workspaces/a2bab5cd-970a-4d89-8a94-c6c186332362/message?version=2018-02-16

なお、workspaces/より右側の文字列は、Watson Assistantで作成したWorkspaceの実際のworkspace-idに置き換える必要がある。

また、最後のversion=2018-02-16の部分は、Assistant APIのバージョンを指定している。これにより、2018-02-16の日付に最も近いバージョンのAPIが起動することになる。

AuthenticationタブのAuthentication typeでBasic(BASIC認証)を選択し、Basic auth profileは、虫眼鏡アイコンをクリックし、Assistant APIを起動するための、ユーザー名とパスワードを設定する。(IBM Bluemixの認証用ではなく、Assistant APIにアクセスするためのユーザー名とパスワードを使用する)

HTTP Requestタブでは、HTTP Headerに「Content-Type = application/json」を追加する。

次にHTTP Methodsを追加する。

Variable Substitionsにmessageとcontextのパラメーターを追加し、初期値を設定しておく。(これはテスト起動の時に使用される)

パラメータ名 初期値
message こんにちは
context {}

次に、HTTP RequestタブのcontentにPOST送信するJSONメッセージを設定する。

{
"input":{
  "text":"${message}"
},
"context":${context}

}

以上により設定は完了だ。

動作確認

HTTP Method設定画面の中段付近のRelated Linksの「Test」をクリックする。

設定されたEndpoint、Basic認証情報、Content-type、content、Variable Substitionsの初期設定にしたがって、APIが起動され結果が表示される。

status=200になっていたら起動成功だ。
Responseには下記のようにWatson Assistantの応答内容が下記の通りのJSONメッセージとして返ってきている。

{
    "intents": [
        {
            "intent": "greetings",
            "confidence": 1
        }
    ],
    "entities": [],
    "input": {
        "text": "こんにちは"
    },
    "output": {
        "text": [
            "こんにちは。こちらサポートデスクです。用件をどうぞ!"
        ],
        "nodes_visited": [
            "node_4_1524918503718"
        ],
        "log_messages": []
    },
    "context": {
        "conversation_id": "dea8cf19-5f81-43e3-a177-f773dd58fd44",
        "system": {
            "dialog_stack": [
                {
                    "dialog_node": "root"
                }
            ],
            "dialog_turn_counter": 1,
            "dialog_request_counter": 1,
            "_node_output_map": {
                "node_4_1524918503718": [
                    0
                ]
            },
            "branch_exited": true,
            "branch_exited_reason": "completed"
        }
    }
}