2018年10月18日木曜日

Twitterの新しいAPIでダイレクトメッセージを送る

TwitterのUser Stream APIが8月から段階的に廃止され、家のRaspberry Piから毎日送信していたダイレクトメッセージも9月半ばになってついに使えなくなってしまった。そこで新しいAPIでダイレクトメッセージを送る方法を調べてみた。


環境


Raspberry Pi (Raspbian Stretch)


※事前にTwitterの開発者向けのページでTwitter APIの利用に必要なAPIキーやトークンなどを取得しておく。


User Stream APIのダイレクトメッセージの代替


User Stream APIのダイレクトメッセージの代替はPOST direct_messages/events/new(message_create)。ただし、リクエスト方法が以前のAPIと変わっていて、Raspberry PiとPython3とTwitterでOCRボットを作るのようにrequests_oauthlibを使ってダイレクトメッセージを送信する方法は使えない。

direct_messages/events/new(message_create)ではcurlコマンドを使用する方法の他にtwurlを使う方法が紹介されている。twurlはTwitter API用に作られたcurl風のコマンドラインツールで、今回はこれを使ってダイレクトメッセージを送信してみる。

twurlはRubyで作成されているようで、まずはRubyとRubyのパッケージ管理システムをインストールする。


続いてtwurlのインストール。


APIを使用するために、コンシューマーキーとコンシューマーシークレットでTwitterアカウントの認証を行う。以下のコマンドを実行して表示されるURLにアクセスするとPINが表示されるので、それをコマンドラインに入力する。「Authorization successful」と表示されたらOK。ちなみに、認証された情報は「.twurlrc」というファイルに保存される。


以下のコマンドで認証済みのアカウント一覧が表示される。


これでtwurlを使う準備ができた。


ユーザーIDの確認


以前のAPIではスクリーンネームでダイレクトメッセージを送信できたが、新しいAPIではユーザーIDが必要なので確認しておく。

以下のコマンドで取得できるメンションタイムラインで自分のユーザーIDを確認できる。取得結果の「..."user_mentions":[{"screen_name":"スクリーンネーム","name":"ネーム","id":ユーザーID,...」に含まれるidが目的のユーザーID。



twurlによるダイレクトメッセージの送信

ダイレクトメッセージの送信は以下のコマンド。recipient_idに確認した自分のアカウントのユーザーIDを設定すると、自分のTwitterアカウントに「Hello World!」というメッセージが送信される。


0 件のコメント:

コメントを投稿