ソースはここです。

使い方

$ git clone https://github.com/pyonk/hubot-line-message-api.git

からの

"dependencies": {
    "bar": "file:./hubot-line-message-api"
}

からの

$ hubot -a line-message-api

でいけると思います。

hubot-line-message-api

結構ガバガバ実装なのでAPI Referenceをしっかり読んでからやるのをオススメします。

設定

必須

  • LINE_CHANNEL_ACCESS_TOKEN
    • lineアカウントのBasic InfomationにあるChannel Access Tokenの値を設定してください。

任意

  • HUBOT_ENDPOINT
    • defaultで/hubot/incomingになってます。
    • 自由に設定していただいて大丈夫です。
  • FIXIE_URL
    • herokuで走らす場合は必須かなと思います。
    • Fixieというアドオンを使います。
    • $ heroku addons:create fixie:tricycleを叩くと自動で設定されています。
    • 出力されるIPアドレスをServer IP Whitelistに設定してあげてください。

できること

今のところpushで送信は対応できておらず、返信しかできません。

  • 返信

    • テキスト

    https://devdocs.line.me/ja/#text

    module.exports = (robot) ->
        robot.hear /^テキスト$/, (res) ->
            res.reply
                type: 'text'
                contents: ['nyaa']
    
    • 画像と動画

    https://devdocs.line.me/ja/#image https://devdocs.line.me/ja/#video

    module.exports = (robot) ->
        robot.hear /^画像$/, (res) ->
            res.reply
                type:'image'# 'video'
                content: [
                    original: 'https://example.com/images/image.jpg'
                    preview: 'https://example.com/images/image.jpg'
                ]
    
    • ボタン

    https://devdocs.line.me/ja/#buttons

    module.exports = (robot) ->
        robot.hear /^テキスト$/, (res) ->
            res.reply
                type: 'buttons'
                altText: 'hogehoge'
                contents: [
                    image: 'https://example.com/images/image.jpg'
                    title: 'this is Buttons'
                    text: 'buttons description'
                    actions:[
                        type: 'uri'
                        label: 'Open in Browser'
                        uri: 'http://example.com/'
                    ]
                ]
    
    • カルーセル

    https://devdocs.line.me/ja/#carousel

    module.exports = (robot) ->
        robot.hear /^カルーセル$/, (res) ->
            res.reply
                type: 'carousel'
                altText: 'hogehoge'
                contents: [
                    image: 'https://example.com/images/image.jpg'
                    title: 'this is Buttons'
                    text: 'buttons description'
                    actions:[
                        type: 'uri'
                        label: 'Open in Browser'
                        uri: 'http://example.com/'
                    ],
                    image: 'https://example.com/images/image.jpg'
                    title: 'this is Buttons'
                    text: 'buttons description'
                    actions:[
                        type: 'uri'
                        label: 'Open in Browser'
                        uri: 'http://example.com/'
                    ]...
                ]
    
    • くみあわせ
    module.exports = (robot) ->
        robot.hear /^くみあわせ$/, (res) ->
            res.reply {
                type: 'text'
                contents: ['nyaa']
            },
            {
                type: 'buttons'
                contents: [
                    image: 'https://example.com/images/image.jpg'
                    title: 'this is Buttons'
                    text: 'buttons description'
                    actions: [
                        type: 'uri'
                        label: 'Open in Browser'
                        uri: 'http://example.com/'
                    ]
                ]
            }
    

注意点

  • contents.length <= 5にしないとLINEに怒られます。
    • くみあわせて使う場合はcontents.lengthを足し算した値が5を超えないようにしないと怒られます。
  • 画像のURLなどはhttpsでないと怒られます。

所感

hubotつかって新しくlinebot作ろうと思ってたらBOT API TrialからよりリッチなMessaging APIが発表されたらしいので、hubotのアダプター作っちゃえってなって作ってみた。 タイトルにもある通り、まだ作ってみている最中なのでちゃんとnpmにあげられるくらいちゃんと作ってみたい。 とりあえず、最低限はできているような気もするので、公開してみる。 初めてcoffeescriptちゃんと触ったし、hubotのアダプターも初めて作るので探り探りすぎて疲れた^q^ けどたのしい。 後から気づいたけどmessage-apiでなくてmessaging-apiだったね。