Line
bot
linebot

いもうとエンハンスの使い方

LINEBOTの「いもうとBOT」の機能を独自に拡張するためのWebhookです。自身の作ったサービスを、いもうとのスキルとして実装することができます。
たとえば、いもうとには機能として備わっていない「占いサービス」を作り、それをいもうとから呼び出すように設定することで、いもうとに占ってもらうことができるようになります。

いもうとBOTについてはいもうとBOTのヘルプを参照ください。

Webhookエンドポイント

HTTPまたはHTTPSの任意のURLを指定します。

パラメータ

Webhookで指定したURLに、JSON形式で以下の値が送信されてきます。これらの情報を使っていもうとエンハンスでの拡張機能を実装してください。

項目 説明
UserId ユーザーを一意に識別するためのIDです。認証やデータ管理などを行う際に利用してください。このユーザーIDはいもうとエンハンス専用のものが払い出されており、いもうと内部やLINEで使用するものとは異なります abc1234ghjkl
NickName あだ名です。「◯◯って呼んで」と指定した値です お兄ちゃん
Text ユーザーから入力されたメッセージ本文です 今日の運勢は?
WordNodes メッセージ本文の形態素解析結果です (JSON Object)
Data ユーザーのデータです。駅情報はユーザーが許可する場合のみ、受信することができます (Dictionary)

レスポンス

JSON形式で以下の値を返却するようにしてください。

項目 説明
Text 応答メッセージ 今日の蟹座の運勢はろくでもないよ。ラッキープレイスは静岡

今後のToDo

いもうとエンハンスは日々進化していきます。認識済みのToDo(開発予定機能)は以下のとおりです。

メディア・位置情報等の送受信

現在はメッセージ本文のみを受信していますが、画像やビデオ、位置情報なども受け取ることができるようにします。
また、応答メッセージとしてそれらを含むこともできるようにします。

セッション情報の維持

現在は文脈を持たせて複数回の話しかけ・応答からなる対話を行うことができませんが、対応していきます。これによって、「イタリアンたべたい」→「いまどこ?」→「渋谷」→「ここはどう? サイゼリヤ渋谷店」、といった会話が可能になります。
ただし、ユーザーIDを使用してエンドポイントAPI側で独自にセッション管理を実装することは可能です。

ユーザーデータの永続化

現在、ユーザーデータを更新することができませんが、応答の一部オブジェクトをいもうとBOT側で更新できるような仕組みを検討しています。
ただし、これもエンドポイントAPI側で独自に実装することは可能です。

リクエスト・レスポンスのサンプル

リクエスト(Webhook先に送られるデータ)

{
    "UserId": "xxxxxxxxxxx1234567890", 
    "NickName": "お兄ちゃん", 
    "Text": "今日の運勢は?", 
    "WordNodes": [
        {
            "Kana": "キョウ", 
            "OriginalFormWord": "今日", 
            "Part": "名詞", 
            "PartDetail1": "副詞可能", 
            "PartDetail2": "", 
            "PartDetail3": "", 
            "Pronunciation": "キョー", 
            "StemForm": "", 
            "StemType": "", 
            "Word": "今日"
        }, 
        {
            "Kana": "ノ", 
            "OriginalFormWord": "の", 
            "Part": "助詞", 
            "PartDetail1": "連体化", 
            "PartDetail2": "", 
            "PartDetail3": "", 
            "Pronunciation": "ノ", 
            "StemForm": "", 
            "StemType": "", 
            "Word": "の"
        }, 
        {
            "Kana": "ウンセイ", 
            "OriginalFormWord": "運勢", 
            "Part": "名詞", 
            "PartDetail1": "一般", 
            "PartDetail2": "", 
            "PartDetail3": "", 
            "Pronunciation": "ウンセイ", 
            "StemForm": "", 
            "StemType": "", 
            "Word": "運勢"
        }, 
        {
            "Kana": "ハ", 
            "OriginalFormWord": "は", 
            "Part": "助詞", 
            "PartDetail1": "係助詞", 
            "PartDetail2": "", 
            "PartDetail3": "", 
            "Pronunciation": "ワ", 
            "StemForm": "", 
            "StemType": "", 
            "Word": "は"
        }, 
        {
            "Kana": "?", 
            "OriginalFormWord": "?", 
            "Part": "記号", 
            "PartDetail1": "一般", 
            "PartDetail2": "", 
            "PartDetail3": "", 
            "Pronunciation": "?", 
            "StemForm": "", 
            "StemType": "", 
            "Word": "?"
        }
    ],
    "Data": {
        "DefaultLanguage": "英語", 
        "EnhanceConfig": "{"UseEnhance":true,"Url":"https://your.domain/path/to/enhance/api","AllowStations":true}", 
        "NotifyTime1": "0600", 
        "NotifyTime2": "2000", 
        "駅/会社": "{"Id":"13101141","Name":"日比谷(東京都)","Lines":[{"Id":"1311021","Name":"都営三田線(西高島平~目黒)","Platforms":[{"Id":"down1_13101141","Name":"目黒方面(南行)","TimeTable":[]},{"Id":"up1_13101141","Name":"西高島平方面(北行)","TimeTable":[]}]}]}", 
        "駅/自宅": "{"Id":"13110091","Name":"緑が丘","Lines":[{"Id":"1307061","Name":"東急大井町線(大井町~溝の口)","Platforms":[{"Id":"down1_13110091","Name":"溝の口方面(下り)","TimeTable":[]},{"Id":"up1_13110091","Name":"大井町方面(上り)","TimeTable":[]}]}]}", 
        "駅/霞ケ関": "{"Id":"13101121","Name":"霞ヶ関","Lines":[{"Id":"1310031","Name":"東京メトロ日比谷線(北千住~中目黒)","Platforms":[{"Id":"down1_13101121","Name":"中目黒方面","TimeTable":[]},{"Id":"up1_13101121","Name":"北千住方面","TimeTable":[]}]}]}"
    }
}

レスポンス(いもうとBOTに返すデータ)

{
    Text: "今日の蟹座の運勢はろくでもないよ。ラッキープレイスは静岡"
}