投稿記事

雑記の記事 (2)

nzws (ねじわさ) 2019/04/11 21:52

LINE Botを初めて作ってみた話

お久しぶりです。先月は全く更新できなかった事を後悔しているねじわさと申します。
こういったのは習慣をつけていかないとダメですね。

という訳で、今回はPHPを用いてLINE Botを作ってみた時のお話を書いていこうと思います。

なぜ作ろうと思ったのか

まあ詳しく話すとアレなので簡単にまとめると、LINEをPCに入れると色々面倒だけど、PCで通知を受け取りたいので、LINEグループのトークに誰かが投稿したらDiscordに通知が行くようにするBotを作って欲しいみたいな事言われたので作りました。

実際にこんな感じに動かしています:
(アイコンと名前を隠しているので分かりづらいですが、実際のLINEアカウントに設定されているアイコンと名前がDiscordでも引用されています)

仕組み

仕組みといってもそんな難しい事はしていなくて、
また公式で LINE SDK for PHP を用意してくださっているので、

  • テキストをwebhookで受信したら
  • アカウント情報を取得して
  • まとめてDiscordにバーーン!!

とかいう適当設計だけど動いてくれてます。
(一応ソースコードをGitHubに上げています: https://github.com/yuzulabo/line-to-discord-bot/blob/master/public/receiver.php)

また、このBotは受信専用で、なおかつプライベート利用なので、Developer Trialかフリープランでも十分動きます。

躓いた点

アカウント情報を取得の時、最初は getProfile([userId]) というのを使用していたのですが、
どうやらこれは Botと友達登録していないと閲覧できない という仕様らしく、
友達を巻き込んでテストした時に自分だけ名前出てるのに他の人はでない...?という現象に悩まされていました。

そのため、グループを使用するBotは getGroupMemberProfile([groupId], [userId]) を使用すると上手くいきます。

(これ: https://github.com/yuzulabo/line-to-discord-bot/commit/2a17ae86068636a060730f7515a4e464889f27bd)

さいごに

現状テキストのみなので、時間があったりしたら画像送信とかもやってみたいです。
あと先月サボってすみませんでしたッ!!!!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

nzws (ねじわさ) 2018/10/28 01:44

雑記: メールをDiscordに転送したい!

友達とやっているグループ Rad Technology では、 contact[at]radtech.work のような共有メールアドレスを作成しています。(メールサーバにはXREAを使用しています)

XREAはメール転送に一つメールアドレスを指定できるのですが、2つ以上には指定できません。
そこで、一つのメールアドレスに飛ばした後、何かしらの方法で飛ばそうと思いました。

(失敗) XREA→Gmail→IFTTT→WebHook→Discord

これは最終的に失敗した方法です。
IFTTTはGmailからメールデータの取得やWebHookによるIFTTTが公式に対応していないサービスへのやり取りにも対応しているのでこれだ!と思いました。

IFTTT(イフト)とは「レシピ」と呼ばれる個人作成もしくは公に共有しているプロフィールを使って数あるWebサービス(Facebook、Evernote、Weather、Dropboxなど)同士で連携することができるWebサービスである。
https://ja.wikipedia.org/wiki/IFTTT より引用

手順は省きますが、レシピを作成してテストすると、メール本文が1行のものを送信すると正常に見れました。しかし、複数行になると見れません。
IFTTTのログを見ると、WebHookで400エラーが出ていました。
多分改行文字のせいで上手くいかなかったのだと思います。
色々考えましたが最終的にIFTTTを使用するのは諦めました...

(成功) XREA→Gmail→Google Apps Script→Discord

Gmailの設定

まず、Gmailで区別用のラベルを作成します。ここでは「to_radtech」としました。
また、自動メール振り分けで、送信したいドメインを設定しておきます。

Gmail側の設定は完了です。

Discordの設定

次に、Discord側でWebHookを作成します。
権限のあるDiscordサーバでメール閲覧用のチャンネルを用意し、チャンネル編集 → WebhooksからWebHookを作成します。
まあ名前とかは適当に設定しておいてください。
ここのWEBHOOK URLを次で使用しますのでコピーしておいてください。

GASの設定

次に、GAS(Google Apps Script)で、コードを叩いていきます。

GASについてこのブログを参考にさせて頂きました。
https://chaika.hatenablog.com/entry/2016/04/15/172404

こんな感じに作りました。
gist.github.com/yuzulabo/828e86e2a34179c90578bc87ab4a125e
(2018/10/28 13:37 不具合修正しました)

注意する点としては、username(ユーザ名になる部分)は2~32文字、content(本文)は1~2000文字(だった気がする)なので、きちんとチェックしてあげないとたまに失敗します。

ここにラベル名とWebHookのURLを入れて、トリガーを設定してあげれば完成です。

やってみる

適当にメールを送信してみます。

こんな感じで受信できました。

まとめ

これを作るよりも記事を書くほうが大変でした。そして開発日誌よりも雑記の方が長い謎。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索