LINE_Bot

LINEのBotを作りたい!!!

TwitterBotを開発したわけで、LINEのBotにも手を出そうかなと思ったわけです。

 こんなツイートをするこいつをLINEにも進出させたいと思って色々しました。

実は今年の初めの時点でLINE developersアカウントは取得していて、なかなか忙しくて触れてなかっただけです!

しかし、ReplyAPI(返信するためのシステム)を使うためにはSSL証明書が要るとわかったので(具体的にはWebHookのURLがセキュアじゃないといけないため)コスト0円では一方的な発言しかできないBotしか作れないことが分かった。まぁその辺はまた今度調べるとして、今回は、Botに"sample"と発言させるまでをやりました。

できるだけ、初心者にもこのサイトだけで解決できるように書いたつもり。

 

必要なもの(ハード)

  • サーバ(ここではRaspberryPi2 ModelBを使用)

必要なもの(ソフト)

  • Python2.x(注意:3系ではうまくいかなった)
  • line-bot-sdk-python

 

github.com

作業開始

LINE developersのアカウントを作成して、Channel Access Token と UserIDを取得し、メモっとく。

 

(Python2.xは使用できることを前提としてます。)

まずGitからSDKをクローンします。

$git clone https://github.com/line/line-bot-sdk-python.git

クローンしたフォルダの中に移動して、以下の3つを実行

$ mkdir lib
$ pip install -t lib flask
$ pip install -t lib line-bot-sdk

libフォルダができるので、ここの中にまた移動。

(つまりカレントディレクトリは\line-bot-sdk-python\lib\)

ここに、以下のコードを保存します。名前はtest.pyとしました。

 

 

import re
import requests

from linebot import LineBotApi
from linebot.models import TextSendMessage
from linebot.exceptions import LineBotApiError

Channel_Access_Token="XXXXX"
User_Id="XXXXX"
Line_Bot_Api=LineBotApi(Channel_Access_Token)

Line_Bot_Api.push_message(User_Id,TextSendMessage(text="sample"))

 

"XXXXX"にはメモっておいた2つを入力。

で、実行すると、

f:id:hxbdy541:20170904122215j:plain

できました。

記事にすると、こんなあっさりしてますが、これをできるようになるまで2日かかってるの...

 

 

参考文献

qiita.com

 

@himazindana_botの仕様

時間がないので、ささっと書いちゃいます。

みんな返信してくれてるのをみると非常にうれしいのですが、「あぁ・・・今の仕様だとそれには返信しないなあ・・・」と感じる返信をいくつか見かけました。より自然な返信をできるようには心がけておりますが、現状のアルゴリズムには限界があるのが現実。

 

時間

このBot、:00と:30に自ら発言し、:15、:45にその時点での新規返信の確認を行い、それぞれに返信します。

 

返信内容

受け取ったメッセージの中から「名詞」を探します。(名詞が見当たらない場合、返信しません!)その名詞に基づいた文章を作ります。

 

あと、今後の課題なんですが、返信するときに宛先を文章の先頭に付加して送信するとそれが最初の発言になってしまって、つながらないんですよね・・・普通なら「このメッセージに返信する」的なボタンを押して返信するとその下に自分の発言がくっついて表示されるけど、このBotの仕様だとそうはならないのが問題。どの発言に対してなのかわかりづらすぎる。いつか直したいなぁ

発想

Javaアプレットで年間カレンダーを作ってたのだが、ある時「その月の最後の日は何日か」が必要になった。カレンダーオブジェクトのセットメソッドには、年月日をパラメータとして、正しい値がプライベートパラメータにセットされるのだが、「知りたい月の次の月の0日を取得すると知りたい月の最終日が取得できる」ということに友人が気づいた。俺は感動したし天才かと思った。俺は日をインクリメントして月が変わった時点で、次の月に以降というスタイルを取ろうと思ってたが友人のアイデアが超画期的に思えたので即友人の考えを採用したのだった。教授は「仮に8/32でセットした場合、9/1になる」と言ったので、それを聞いた俺は日の増加のみによって月末の判断が可能だと思ったが、なかなかスマートじゃないしってことで実装段階で悩んでた時にこれ。9/0をセットすることで8/31つまり知りたい月の最終日が取得できるのである。完全に教授の言い方から、値を増加させるという考えしか働かなかったし、そこでこのデクリメントさせるアイデアを出せるのは本当にスゴいと思った。

言い訳

(某アライグマ)やってしまったのだ・・・

またBot(@himazindana_bot)の活動が停止しました。

度重なってるので理由を書こうかと思います。個人的な理由があるのが申し訳ない。

  • 非テクニカルな人向け

Botのサーバは自宅にあり、自分は別なところに住んでいるため、理由は帰ってみないとよくわかりませんが動かなくなりました。自宅に帰省後、直接設定し直す必要があるので、はやくて今週の金曜日の夜までつぶやけません。

  • テクニカルなことがわかる人向け

どういうことかというと、Botのサーバは自宅にあり、自分は別なところに住んでいるため自宅とVPN接続してBotプログラムの改造を行ってました。で、あるタイミングで、IPアドレスが動的になってしまったので、固定しなおそうとしたところ、仮想NICとeth0の設定のどっかをコメントアウトしちゃったらしくて(覚えてない。もう接続できなくなったので確認のしようもなくなった。)サーバの再起動後、サーバにつながらなくなる事態が発生。緊急用のVPNサーバを用いて、LAN内を探し回ったのですが、見つからず...自宅に帰省後、直接設定し直す必要があるので、はやくて今週の金曜日の夜までつぶやけません。

 

 

作業環境

作業時、机の上には最小限のものしか置かないようにしている。

メモ、時計、照明、その時に使うもの、の4つだけでいい。

 

メモは無印の小さな正方形の。

時計は、アナログ。

照明は暖色系。デスクライトにオレンジ色のはあまり見かけないか。

 

自分は夜の方が座って行う作業は捗る。昼間、ラジオを聴いていると、外出とかアクティブな休日を勧めてくるせいで、少し、何もないけど、机で作業していると焦ってしまう。なんだか今日はそれが強くて、落ち込んでしまった。周りのものが自分を焦らせてるように感じたから、夜は部屋の電気を消して、明かりはデスクライトだけで作業することにした。

Ubuntu

UbuntuをUSBからブートできるようにしてみる。

なぜ入れたいと思ったか

ラズパイを扱っていたけど、もっと面白いことがlinuxではできるのではないかと考えたのがきっかけで、USBからOSをブートするのがカッコ良いと感じたから。

用意(ハードウェア)

  1. BuffaloのUSB4GB(既に持ってた)。お試し版起動する用。
  2. BuffaloのUSB8GBを用意した。16GBはいらないと独断した。

用意(ソフトウェア)

  1. Ubuntuの日本語サイトからISOをダウンロードUbuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team
  2. USBにイメージファイルを焼くソフトをダウンロードUSBWriter - k本的に無料ソフト・フリーソフト

実行

  1. FAT32でフォーマットしたUSB4GBにUSBWriterを使ってUbuntuのイメージファイルを焼く。
  2. BIOSを開いて、起動順位をUSBを上に設定
  3. CUIっぽい感じで多分色々出てくるけど、Try Ubuntu without installingを選択する。お試し版的なUbuntuが起動する。
  4. USB8GBをパーティションする。単純に4GBずつに分けたと思う。スワップ用空間はUSBの負担になるので作らない。
  5. USB8GBにインストールする。

めんどうな問題

多分、SEとかそういうプロフェッショナルにはとてつもない単純なことなんだろうけど、いちいちGNU GRUBが起動するようになってしまった。initrd /boot/initrdって命令を実行しないことにはWinも起動しない。USBを挿してる時はUbuntu。挿してない時はWin。この単純な設定は果たしてできないのか。いやできないわけないよなあ…

自然

ただ机という目的を果たし続けている事務的な机と椅子。あとベッドという殺風景な場所で生活してると狭くもないのに狭く感じたり、妙に落ち着かなかったりするので、最近は観葉植物でも買おうかと以下のサイトを見て時間を潰してるわけです。

観葉植物の人気種類別ランキング | 通販サイトひとはな

普通に手が出せない値段だからこのサイトでは買わないけど、パキラ良いよ。風水的には2つペアで買うといいらしい。あとゴーヤみたいな上から垂れ下がるタイプの葉っぱも良い。その辺を買おうかなと。

 

初めは、水槽が欲しいな…とか、青いラバランプが欲しいなとか少し水関連が気になってたけど、生き物を飼うのは大変だしラバランプは最近は売ってないしでやめた。

植物園とか行きたい。どこかで安く手にはいらねぇかな。

f:id:hxbdy541:20170503003652j:imageパキラ

f:id:hxbdy541:20170503003830j:imageコウモリラン苔玉