APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

[StackStorm] Twitter Pack 使ってみた

■ はじめに

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でのつぶやきはしやすくてよいかもです。 ※くれぐれも使い方には注意を。。

自己評価

導入性:★★☆/便利度:★★★/完成度:★★☆

おためしあれ。