TwitterとMastodonを連携してみた（1）

<5/1アップデート>
この記事の手順でシナリオを作成すると新規Twitterコネクターの作成で自動的にTwitterの認可画面に飛ばない現象が発生することがあったようです。（今は[この修正内容の2番目の項目](http://www.codyltech.com/opinfo/2017-05-01-maintenance-done/)で修正されています。）

そのような場合は、コネクタータブでTwitterコネクターのところに「アカウントに接続してください。」とエラー表示されていると思うので、　[アカウントに接続]リンクをクリックして認可を行ってください。（下図）

![twitter unauthorized.png](https://qiita-image-store.s3.amazonaws.com/0/61150/eac3aa27-036a-cae6-c37d-11dd32388dad.png)
</ 5/1アップデート>

<4/26アップデート>
反対向き（マストドン->ツイッター）の連携も試してみました。
[TwitterとMastodonを連携してみた（2）](http://qiita.com/kemayako/items/846c3c6c630a11b102d4)
</ 4/26アップデート>

マストドン流行ってますね:smiley:

ツイッターでつぶやいた内容をマストドンに投稿（トゥートって言うらしい）しなおすのってなんだかあほらしいです。Codyl ConnectというWebサービスやスマホを連携させることのできるサービスを使って連携させてみました。

※ この記事は、個人的な実験結果を公開するものであり所属する組織の見解を代表するものではありません。

# 1. やろうとしていること

やろうとしていることは、次のようなことです。

> ツイッターでつぶやいたら、同じ内容を自動的にマストドンにトゥートする。

これをやるには当たり前のものも含めて次のアカウントが必要になるので、事前に用意しておいてください。

|必要なアカウント  |備考                                      |
|:-------------|:----------------------------------------|
|Twitter       | メッセージ転送元のTwitterアカウントです。        |
|Mastodon      | メッセージ転送先のMastodonアカウントです。私は[friends.nico](https://friends.nico/about)を使ってみました。|
|Codyl Connect | Codyl Connectのアカウントを持っていない人は[ここ](https://connect.codyltech.com/newuser)から、新規アカウントを登録できます。|

# 2. Mastodonのアクセストークン

ConnectからAPIを実行してトゥートするためアクセストークンが必要になります。アクセストークンの取得方法はいろんな人が書いているので、ここでは省略しますが、@takahashimさんの[Access Token Generator for Mastodon API](https://takahashim.github.io/mastodon-access-token/)を使うと簡単にアクセストークンを入手できます。
<4/22アップデート>アクセストークンのスコープはwriteが最低限必要です。</ 4/22アップデート>

# 3. Codyl Connectの設定

## 3-1 シナリオを作成

Connectのシナリオを新規作成します。[シナリオ]タブの[新規シナリオ作成]ボタンを押します。

![new scenario.png](https://qiita-image-store.s3.amazonaws.com/0/61150/5991f072-56c7-9966-35d5-168925950635.png)

## 3-2 シナリオプロパティを編集

シナリオの枠が出来上がると、次のような画面が出てきますので、次の設定をします。

1. シナリオの名前と説明を適当に書き換えます。（書き換えなくてもいいのですがシナリオ一覧でみた時に名前を設定していないと何が何だかわからないです。）
2. 右側ペインにある[+パラメーター追加]ボタンを押して、シナリオパラメーターを追加します。
3. パラメーターは次のように設定します。
    - 説明：アクセストークン
    - 名前：access_token
    - 型：string
    - 値：上で取得したMastodonのアクセストークン（おそらく英数64文字の文字列）
4. 再実行頻度を0に設定します。
5. [イベントウォーク新規作成]ボタンを押します。

![scenario property.png](https://qiita-image-store.s3.amazonaws.com/0/61150/b7cdacdd-f745-dbae-142e-d9800693eaaf.png)

## 3-3 イベントウォークを編集

イベントウォーク作成画面の左側ペインの[main]と[main_exit]の間にある[+]を押してステートを作成します。今回は、「自分のツイートを監視するステート」と「マストドンへ書き込むステート」の2つのステートを作成します。

![add state.png](https://qiita-image-store.s3.amazonaws.com/0/61150/41405746-a8aa-095b-8602-01f72b25dc65.png)

### 一つ目のステート（多分state2）を編集

2つステートを作ったら、上にあるステート（多分state2）を選択して、右側ペインの[+ステートにコネクターを追加]を押し、[新しいコネクターを作成]を選びます。

![state2.png](https://qiita-image-store.s3.amazonaws.com/0/61150/0d179a7b-9ab1-716c-b823-4cb23ffb3ed8.png)

次のようなダイアログが出るので、[Twitter]を選択して[アカウントに接続]します。

![create twitter connector.png](https://qiita-image-store.s3.amazonaws.com/0/61150/82721744-5587-48bf-7bf6-e8cb65d23212.png)

アカウント接続後、元の画面に戻ってくるので、メソッドに[TRIGGER: when tweet]を選びます。画面の下の方にあるパラメーターはデフォルトのままでOKです。

![when tweet.png](https://qiita-image-store.s3.amazonaws.com/0/61150/46214a26-9469-d51c-2b57-e207690ce594.png)

### 二つ目のステート（多分state4）を編集

同様に次のステート（多分state4）を選択して、右側ペインの[+コネクターを追加]を押し、[新しいコネクターを作成]を選びます。今度は[WebHook]コネクターを作成します。Connect → 外部サービスの[外部サービスのWebHook URL]の部分に、Mastodonのトゥートを書き込むAPIエンドポイント(Mastodonインスタンスのドメイン名の後ろに`/api/v1/statuses`を追加したもの)を書きます。

例） MastodonインスタンスのURLが`https://friends.nico`の場合は、`https://friends.nico/api/v1/statuses`

書いたら[作成]ボタンを押してコネクターを作成します。

![create webhook.png](https://qiita-image-store.s3.amazonaws.com/0/61150/dbc3f120-3ad0-91c2-d626-a4a7fbdefc49.png)

メソッドに[ACTION: post message]を選び、画面下の[+パラメーターを追加]ボタンで、パラメーターを3個追加します。

![post message.png](https://qiita-image-store.s3.amazonaws.com/0/61150/53fc7857-d095-2b36-2dcc-9c6564c6003c.png)

追加したパラメーターはそれぞれ次のように設定します。(パラメーターの設定順序は気にする必要はありません。)

|名前         |型    |値                            |
|:-----------|:-----|:----------------------------|
|access_token|string|{{consolidated.access_token}}|
|status      |string|{{last.text}}                |
|visibility  |string|public                       |

![post message parameters.png](https://qiita-image-store.s3.amazonaws.com/0/61150/15202c4a-1481-b42a-9e0c-840f3981f78b.png)

## 3-4　シナリオを有効化

ページ上部のメニューからシナリオプロパティ画面に戻ります。

![back to scenario property.png](https://qiita-image-store.s3.amazonaws.com/0/61150/a0076fb6-29e1-6deb-cdf4-87c6164ed3ad.png)

スケジュール設定を[有効]にします。

![scheduler.png](https://qiita-image-store.s3.amazonaws.com/0/61150/044690cf-a276-0a14-9c79-94c871c53c20.png)

これで、Connectの設定ができました。

# 4. 試しにツイートしてみる

![twitter.png](https://qiita-image-store.s3.amazonaws.com/0/61150/8d8ef806-9cf9-d1a1-7977-b2c3e87bcf01.png)

![mastodon.png](https://qiita-image-store.s3.amazonaws.com/0/61150/4f4d05e1-9008-b0c4-2510-d6e18e7640e0.png)

こんな感じに連携できました。パチパチパチ


# 5. Codyl Connectについての参考情報
[ファーストステップガイド](http://www.codyltech.com/connect/#connect_first_step)
[レビュー記事](http://www.codyltech.com/connect/review/)


ではまたね。