1
/
5

LINEでTwitter検索する

はじめに

新卒2年目エンジニアのkasuke18と申します。
今回はLINEでメッセージを送信することでTwitter検索を行うLINE Botを作成してみましたので、作成の流れや実際のコードを記載します。使用言語はPHPです。

もくじ

構成

今回はLINEのAPITwitterAPIを利用します。また、LINEで送信されたテキストに対して処理を行うWebhookスクリプトを設置するSSL対応のサーバが必要なため、HEROKUを使用しています。
イメージとしては以下のようになります。


必要なもの

APIを利用するまでの流れについては、LINE Messaging API公式サイトに詳しい説明が記載されています。
また、Twitter REST APIは公式サイト上のどこに記載されているか発見できませんでしたが、検索すればそのあたりのことが書かれている導入記事が数多くあるので省略します。
HEROKUの使用方法については当ブログに記事がありますので、ぜひそちらをご参照ください。

コマンド不要で超簡単!HerokuでWebアプリ開発を30分で始める【php+postgres】 - RAKUS Developers Blog | ラクス エンジニアブログ
こんにちは。エンジニアのmickey-STRANGEです。 前回は めんどくさがりによるめんどくさがりのためのスマホアプリ開発についてお話したいと思います。なんて言いながら、全てをJSでごりっと無理やり解決する方法をご紹介しました。tech-blog.rakus.co.jp はい、タイトル詐欺です、すみません。冷静に考えて、この作りのWebページが世の中にない現状、これよりも簡単な方法が必ずあるはずなんですよね (当時サンプル書きながらコレめんどくさいな、なんて思ってないです) 。 今回はタイトル詐欺では
http://tech-blog.rakus.co.jp/entry/2018/05/09/100346

実装例

メッセージの取得

まずはLINEから送信されたメッセージテキストを受け取る部分です。
LINE Platformから送信されるのはJSONで、以下のような形式となっています。

上記のJSONをもとにパースして送信されたテキスト情報を取得するコードが以下となります。送信される形式がJSONなので、$_POSTではデータが取得できないことに注意が必要です。

Twitterで検索

次に受信したテキストをキーワードとして、Twitterで検索します。Twitterの連携については自前でやってしまうのもありですが、面倒なのでTwitter連携パッケージmpyw/cowitterを使用しています。

$tweetsParamsで検索条件を指定します。
qは検索キーワードで、検索演算子も利用できます。今回はリツイートを排除したいので、検索演算子-rt
を使用しています。
countはそのまま検索結果の取得件数で今回は10件、result_typeは取得するツイートの種類でrecent
とすることで最新のツイートを取得します。
最後のinclude_entitiesは少し特殊で、取得したツイートオブジェクトにentitiesプロパティを含めるかどうかを指定します。entitiesプロパティとはツイート本文を拡張するエンティティで、画像や動画などの本文に付け足すための情報が格納されています。今回はツイートに付随する画像のURLを取得するために使用しています。
他にも設定可能なプロパティがありますが、今回は不要なので省略します。必要に応じてこちらをご参照ください。

検索結果のパース

検索結果から必要な情報を抜き出すときにも、mpyw/cowitterが当然ながら活躍してくれます。
今回必要とする情報はツイート本文
ユーザ名
ツイートURL
画像URL
です。それぞれの情報は以下のようにして取得します。

ここで注意する点が2つあります。
まず1つ目はツイートURLです。これはツイートオブジェクトの中に直接記載されていないので、その他の情報を結合して作成する必要があります。
2つ目は画像URLです。画像のURLは2種類あり、media_url
media_url_https
があります。見ての通りHTTPかHTTPSかが違うだけなのですが、LINEのAPIHTTPSでないとダメなので、media_url_https
のURLを取得する必要があります。

LINEに送信

最後にLINEに送信します。単に動かすだけならプレーンテキストでもよいのですが、今回は少し見た目にこだわってFlex Message
という形式にしてみます。Flex Message
では複雑なレイアウトを自由に作成可能です。今回は以下のような見た目にしました。ほかにどのようなレイアウトにできるのかは、サンプルなどもありますので公式ページをご参照ください。

以下が今回の見た目を作成するのに必要な情報を設定した配列です。この配列をjson_encodeして送信します。

そして実際に作成したメッセージを送信する部分のコードが以下となります。
改めて説明するまでもなく、curlをたたいて終わりです。

おわりに

特に需要はないでしょうが、今回はLINEからTwitter検索をしてみました。単にAPIをたたくだけで多くのことができます。今回はテキストメッセージを検索するということしかしていませんが、もっと面白いものがあれば機能拡張という形で取り込んで行きたいです。
最後までご覧いただきありがとうございます。

株式会社ラクスでは一緒に働く仲間を募集しています
今週のランキング
株式会社ラクスからお誘い
この話題に共感したら、メンバーと話してみませんか?