Posted at

Twitterにウェルカムメッセージを設定する

Twitterにはウェルカムメッセージを設定することが可能です。

日本語のドキュメントがあまり見当たらなかったので備忘録。


ウェルカムメッセージ

初めてダイレクトメッセージを送る(または会話を始める)ときに自動で表示されます。

ウェルカムメッセージを表示するには2つの方法が存在します。

- ダイレクトメッセージ画面を開いた場合にデフォルトで表示されるメッセージ

- ツイートに付与したボタン(ディープリンク)から遷移する場合にのみ表示される特定のメッセージ


設定してみる

詳しいドキュメントはWelcome Messagesを参照。

Twitterの開発者申請は済んでいるものとして進めていきます。

今回もPHPを使用します。


TwitterOAuth

Twitter APIを使用するためにabraham/twitteroauthを使用します。

$composer require abraham/twitteroauth

Composerでインストールします。


メッセージを登録する

ウェルカムメッセージは表示させるためにはアカウントにメッセージを登録する必要があります。

ドキュメントは下記

direct_messages/welcome_messages/new


create_message.php

<?php

require './vendor/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;
use Dotenv\Dotenv;

$dotenv = Dotenv::create($_SERVER['PWD']);
$dotenv->load();

$twitter = new TwitterOAuth(
$_SERVER['CONSUMER_KEY'],
$_SERVER['CONSUMER_SECRET_KEY'],
$_SERVER['OAUTH'],
$_SERVER['OAUTH_SECRET']
);

$text = "これはWelcomeMessageです。
自動で送信されます。"
;

$params = [
"welcome_message" => [
"message_data" => [
"text" => $text
]
]
];

$res = $twitter->post('direct_messages/welcome_messages/new', $params, true);
var_dump($res);


ウェルカムメッセージの基本はダイレクトメッセージと同じです。

message_dataにメッセージで表示させたいテキストを記述します。

リクエストが成功すると下記のレスポンスが返ってきます。

{

"welcome_message": {
"id": "1181826364040605700",
"created_timestamp": "1570593298193",
"message_data": {
"text": "これはWelcomeMessageです。
自動で送信されます。"
,
"entities": {
"hashtags": [],
"symbols": [],
"user_mentions": [],
"urls": []
}
},
"source_app_id": "*****"
},
"apps": {
"*****": {
"id": "*****",
"name": "AppsName",
"url": "https:\\/\\/twitter.com\\/good_wall"
}
}
}

重要なのはwelcome_message内のidです。

デフォルトで表示する場合にもディープリンクから表示する場合にもこのidが必要なためメモ等しておきます。

忘れたとしてもGET direct_messages/welcome_messages/listで登録しているメッセージの一覧を取得することができます。

メッセージは1つだけではなく複数登録することが可能です。


デフォルトで表示する

メッセージは登録しただけでは表示されることはありません。

まずはデフォルトで表示されるように設定してみます。

ドキュメントは下記

POST direct_messages/welcome_messages/rules/new


create/rules.php

<?php

require './vendor/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;
use Dotenv\Dotenv;

$dotenv = Dotenv::create($_SERVER['PWD']);
$dotenv->load();

$twitter = new TwitterOAuth(
$_SERVER['CONSUMER_KEY'],
$_SERVER['CONSUMER_SECRET_KEY'],
$_SERVER['OAUTH'],
$_SERVER['OAUTH_SECRET']
);

$welcome_message_id = "1181826364040605700";

$params = [
"welcome_message_rule" =>
[
"welcome_message_id" => $welcome_message_id
]
];

$res = $twitter->post('direct_messages/welcome_messages/rules/new', $params, true);
var_dump($res);


$welcome_message_idには先程メッセージの登録時に返ってきたidを記述します。

リクエストが成功すると下記のレスポンスが返ってきます。

{

"welcome_message_rule": {
"id": "1181817806356172805",
"created_timestamp": "1570601570303",
"welcome_message_id": "1181826364040605700"
}
}

指定したwelcome_message_idが含まれたwelcome_message_ruleが返ってくれば成功です。

実際の挙動を確認します。

ezgif-3-5d981add13c6.gif

DM画面を開くと自動でメッセージが表示されました。(ブラウザだとラグが…)

デフォルトで設定できるメッセージは1アカウントに対して1つです。

メッセージを変更をする場合には現在設定されているルールを削除してから新しいルール登録する必要があります。


特定のツイートから表示する

ディープリンクを使用することでデフォルト以外のメッセージを表示させることも可能です。

ドキュメントは下記

Deeplinking to a Welcome Message


Example Direct Message Deeplink:

https://twitter.com/messages/compose?recipient_id=3805104374&welcome_message_id=12345


ディープリンクはTwitterのuser_idとwelcome_message_idを用いて作成します。

recipient_idにはusr_idを,welcome_message_idにはwelcome_message_idを指定します。

新たにディープリンク用のメッセージを登録しました。

{

"welcome_message": {
"id": "1181846303585771525",
"created_timestamp": "1570604597384",
"message_data": {
"text": "これはディープリンクで表示されるメッセージです。",
"entities": {
"hashtags": [],
"symbols": [],
"user_mentions": [],
"urls": []
}
},
"source_app_id": "*****"
},
"apps": {
"*****": {
"id": "*****",
"name": "AppsName",
"url": "https:\\/\\/twitter.com\\/good_wall"
}
}
}

これを元にディープリンクを作成します。


https://twitter.com/messages/compose?recipient_id=127167709&welcome_message_id=1181846303585771525

※クリックするとTwitterのDM画面が開いてメッセージが飛んできます。


このディープリンクを呟くとダイレクトメッセージボタンが生成されます。

image.png

上記リンク及びボタンからDM画面を開くと先程登録したメッセージが表示されます。

ディープリンクからDM画面に遷移した場合はデフォルトのメッセージは表示されません。


基本がダイレクトメッセージなのでボタンやクイックリプライの設定が可能です。

ezgif-3-0e8390b31192.gif

ボタンやクイックリプライについてはこちらを参考にしてください。


まとめ

Account Activity APIと併用すればチャットボット開発できるな〜とか思いました。

デフォルトのメッセージは停止済みですが,ディープリンクの方は残してあります。

実際に試してみたい方はリンクを押してみてください。

ウェルカムメッセージの履歴は送信者側には残りません。

そのため通知等がこちらに飛ぶことはないので安心してください。

おわり。