■ はじめに
APCの佐々木です。
StackStorm(以下ST2)にはPackという連携するシステムごとに Sensor、Trigger、Action、WorkFlowをまとめたものが存在します。
Stackstorm Exchangeで公開されているPackを いくつか評価していますので、順次アップしていきます。
今回はどれがよいか選別していましたが 今流行り(?)のSNSがよいのではと思いたち Twitter Packにしてみました。
■ Twitter Pack 内の Action の概要
Twitter Packには3つのActionが用意されています。
Action 名 | 用途 |
---|---|
direct_message | 名前の通りダイレクトメッセージを送るAction |
follow | 何かをフォローしたい時に使うAction |
update_status | いわゆるつぶやきする時に使うAction |
この中で一番使用頻度が高いと思われる update_status
から検証していきたいと思います。
■ 検証内容
個人的にST2は1年くらい触っているのですが、最近はChatOpsの機能をよくいじっています。
そのため、今回はslackからつぶやいて、Twitterに投稿するまでをやってみたいと思います。
※ChatOps導入説明は割愛します。(いずれ書きます)
環境
awsで構築しているChatOpsを実装しているサーバがあるので、それを使ってみたいと思います。
1. 実装する上での下準備
事前に準備しておかなければいけない設定ファイルがある。
/opt/stackstorm/packs/twitter/twitter.yaml.example
というファイルが用意されており
これを基に /opt/stackstorm/configs/twitter.yaml
を作成します。(コピればOK)
中身はこんな感じです。
--- consumer_key: "ほげほげ" consumer_secret: "ほげほげ" access_token: "ほげほげ" access_token_secret: "ほげほげ" query: - "StackStorm" - "@Stack_Storm" count: 30 language: ja
TwitterのAPIを使用し以下の情報を取得するには、「Twitterアプリケーションの作成」という作業が必要です。
- Consumer Key
- Consumer Secret
- Access Token
- Access Token Secret
作成手順はここに記載があるので参考に。 qiita.com
「query」はTwitterタイムラインを検索するための文字列です。配列で記載し、or条件となっています。 なにに使うのかというと、このTwitter Packには2つのセンサーが提供されていて、それと連携するために使います。
用途的には、「query」で設定した文字がHITしたら、slackと連携して、 取得した情報を特定のchannelに投下したりできます。
設定ファイルを更新したら、反映させるために以下コマンド実施を忘れずに。
st2ctl reload --register-configs
2. metaファイルの確認
[ec2-user@ip-172-31-3-229 aliases]$ cat /opt/stackstorm/packs/twitter/actions/update_status.yaml --- name: "update_status" runner_type: "python-script" description: "Update your status (post a new tweet)." enabled: true entry_point: "update_status.py" parameters: status: type: "string" description: "New status (tweet message)." required: true
どうやらstatusというのがつぶやきに相当するものらしいです。
3. aliaseを書く
ChatOpsを使うにあたり、slackでなんの発言があった場合につぶやくかをルール化してあげるために記載します。
[ec2-user@ip-172-31-3-229 aliases]$ pwd /opt/stackstorm/packs/oops/aliases [ec2-user@ip-172-31-3-229 aliases]$ ll | grep twitter_update_status.yaml -rw-r--r--. 1 root root 148 May 14 06:27 twitter_update_status.yaml
中身はこんな感じ
--- name: "twitter.update" ←ユニークになるように命名 action_ref: "twitter.update_status" ←<Pack名>.<アクション名>を記載 description: "twitter update_status chatops." ←説明書き formats: - "twitter update {{status}}" ←slackでどんな発言に対して反応するかを記載。 ここではtwitter update <つぶやきたいこと> と発言すると反応する。
aliase の設定を反映させるには、以下コマンドを忘れずに。
st2ctl reload --register-all
service st2chatops restart
これらの設定をしてあげれば、いつでもどこでもチャットからつぶやけます。
所感
一部下準備作業が発生しますが、難しい作業ではないので問題ないです。 設定する箇所も多くないので、実装は優しいかなと思います。
私はSNSの類を全くやらないので、わからないのですが ヘビーユーザからするとChatOpsでのつぶやきはしやすくてよいかもです。 ※くれぐれも使い方には注意を。。
自己評価
導入性:★★☆/便利度:★★★/完成度:★★☆
おためしあれ。