システム連携ネタでよくブログを書いている日下です。
※ちなみにこれまでのネタはこちら
2: Questetra と Mastodon との連携
2.1: Mastodon で使える grant_type
2.2: grant_type:authorization_code で連携する方法
2.3: grant_type:password で連携で連携する方法
3: Questetra と Twitter との連携
3.1: grant_type:client_credentials で連携
4: まとめ
1: 「マストドン(Mastodon)」とは?
マストドン:Mastodon は Twitterによく似たSNSを誰でも自由に運用できる「脱中央集権型」の短文投稿型のSNSサービス/フリーソフトウェア
最近よく耳にする「マストドン(Mastodon)」。
まだ私もそれほど使っていないのですが、Twitter サーバを自分専用で建てられるもののようですね。
Mastodon には API もあるようなので、Questetra からたたけるかを調べてみました。
#実際にそういう用途があるかを考えると、今のところはあまりない気がしていますが、Mastodon がもっと広がったらマーケティングとしての活用も出てくるかもしれません
また、Mastodon の元とも言える Twitter の API は以前から有名(試しに Web API をたたいてみるのにとりあえず Twitter でやってみた、という人は多いんじゃないかと)なので、それとの比較もしてみました。
2: Questetra と Mastodon との連携
2.1: Mastodon で使える grant_type
OAuth2 の grant_type(トークンの取得方法) は4種ありますが、Mastodon は authorization_code と password が使えるようです。(対して Twitter は client_credentials のみが使えるとのこと)
※他の grant_type に対応しているかどうかまでは未確認。また、grant_type の password は一般的にあまり推奨されていないので、その点もご留意ください。
・Authorizaton Code Grant (authorization_code)
・Implicit Grant (implicit)
・Resource Owner Password Credentials Grant (password)
・Client Credentials Grant (client_credentials)
※詳細はこちらのページを参考にしてください。
2.2: grant_type:authorization_code で連携する方法
Questetra にある「メッセージ送信中間イベント(HTTP)」を使います。
これはフローの途中で http リクエストを送付できる機能で、OAuth2 (grant_type は authorization_code)の連携設定も可能です。もしこれで API がたたけるケースならプログラミングは不要です。
設定の詳細は後述します。
※「メッセージ送信中間イベント(HTTP)」のマニュアルはこちら
M225: 業務データを組み込んだHTTPリクエストが、自動的に送信されるように設定する
Mastodon へのクライアント登録
まず Mastodon へのクライアント登録については以下で行います。
※「{クライアント名}」には好きな名前を入れてください
※scopes はやりたいことに応じて変更してもいいですが、後で Questetra 側で行う設定とあわせてください
※処理結果から取得できる client_id と client_secret は後で使いますのでコピーしておいてください
※redirect_uris は https://f.questetra.net/oauth2callback か https://fs.questetra.net/oauth2callback となるケースがあります。後述の Questetra の OAuth 設定画面で確認してください
Questetra の「メッセージ送信中間イベント(HTTP)」の OAuth 設定
「メッセージ送信中間イベント(HTTP)」の OAuth 設定画面には、「メッセージ送信中間イベント(HTTP)」のプロパティの「セキュリティ/カスタムヘッダ」の「OAuth2.0 で接続する」の「設定はこちらから」ボタンからと、プロセスモデルの詳細画面の「▼アプリ」ボタンメニューの「OAuth2.0 設定」からのどちらからでもいけます。
名称 | 値 |
---|---|
名前 | (好きな設定名、後で指定する際に使います) |
認可エンドポイントURL | https://{ホスト名}/oauth/authorize |
トークンエンドポイントURL | https://{ホスト名}/oauth/token |
スコープ | read write follow(やりたいことに応じて変更してください) |
クライアントID | (クライアント登録時に取得したもの) |
クライアントシークレット | (クライアント登録時に取得したもの) |
※「{ホスト名}」には対象とした Mastodon のホスト名を入れてください
OAuth の設定値としては、以下となります。「トークンの取得」がうまくいけばOKです。
Questetra の「メッセージ送信中間イベント(HTTP)」のプロパティ設定
投稿する API をたたく場合、「メッセージ送信中間イベント(HTTP)」の設定としては、以下となります。
名称 | 値 |
---|---|
通信設定:URL | https://{ホスト名}/api/v1/statuses |
セキュリティ/カスタムヘッダ:OAuth2.0で接続する | (さきほどの OAuth 設定名) |
送信パラメータ | status:(投稿したい文言) |
・通信設定:「エラー発生時にエラー内容を格納する文字型データ項目」
・レスポンス:「レスポンスを保存する」にチェックをつけて「保存先のデータ項目」
2.3: grant_type:password で連携で連携する方法
grant_type password の場合は、Questetra にある「スクリプトタスク(スクリプト工程)」を使います。設定の詳細は後述します。
※「スクリプトタスク(スクリプト工程)」のマニュアルはこちら
M230: 業務データの複雑なデータ加工が自動実行されるように設定する(ECMAスクリプト)
Mastodon へのクライアント登録
まず Mastodon へのクライアント登録については以下で行います。
※「{クライアント名}」には好きな名前を入れてください
※scopes はやりたいことに応じて変更してもいいですが、後で Questetra 側で行う設定とあわせてください
※処理結果から取得できる client_id と client_secret は後で使いますのでコピーしておいてください
※redirect_uris は https://f.questetra.net/oauth2callback か https://fs.questetra.net/oauth2callback となるケースがあります。 2.2 を参考に Questetra の OAuth 設定画面で確認してください
Questetra の「スクリプトタスク(スクリプト工程)」の設定
「スクリプトタスク(スクリプト工程)」で、アクセストークンの取得および投稿の URL をたたく形となります。以下サンプルコードです。それぞれ{}内には必要な値を入れてください。
var message = data.get("3");
var clientId = "{クライアントID}";
var secret = "{クライアントシークレット}";
var accessLog = "";
var uriToken = "https://{ホスト名}/oauth/token";
var response = httpClient.begin()
.formParam( "grant_type", "password" )
.formParam( "client_id", clientId )
.formParam( "client_secret", secret )
.formParam( "scope", "write read follow" )
.formParam( "username", "{ログインユーザ名}" )
.formParam( "password", "{ログインパスワード}" )
.post( uriToken );
accessLog += "---POST request--- " + response.getStatusCode() + "\n";
accessLog += response.getResponseAsString() + "\n";
var oauthTokenObj = JSON.parse( response.getResponseAsString() );
var oauthToken = oauthTokenObj.access_token;
accessLog += "oauthToken: " + oauthToken + "\n";
var uriExecute = "https://{ホスト名}/api/v1/statuses";
var responseCreate = httpClient.begin()
.bearer( oauthToken )
.formParam( "status", message )
.post( uriExecute );
accessLog += "---POST request--- " + responseCreate.getStatusCode() + "\n";
accessLog += responseCreate.getResponseAsString() + "\n";
retVal.put( "0", accessLog );
3: Questetra と Twitter との連携
Twitter は OAuth2 の grant_type として client_credentials のみが使えるとのこと。
※参考資料:Twitter API ドキュメント POST oauth2/token
3.1: grant_type:client_credentials で連携
Twitter へのクライアント登録
まず、Twitter へのクライアント登録については、こちらのページを参考にしてください。こちらも Consumer Key(client_id)と Consumer Secret(client_secret)は後で使いますのでコピーしておいてください
※Callback URL は https://s.questetra.net/oauth2callback か https://f.questetra.net/oauth2callback か https://fs.questetra.net/oauth2callback となります。2.2 を参考に Questetra の OAuth 設定画面で確認してください
Questetra の「スクリプトタスク(スクリプト工程)」の設定
「スクリプトタスク(スクリプト工程)」で、アクセストークンの取得および一覧取得の URL をたたく形となります。
以下サンプルコードです。それぞれ{}内には必要な値を入れてください。
var clientId = "{クライアントID}";
var secret = "{クライアントシークレット}";
var accessLog = "";
var uriToken = "https://api.twitter.com/oauth2/token";
var response = httpClient.begin()
.formParam( "grant_type", "client_credentials" )
.formParam( "client_id", clientId )
.formParam( "client_secret", secret )
.post( uriToken );
accessLog += "---POST request--- " + response.getStatusCode() + "\n";
accessLog += response.getResponseAsString() + "\n";
var oauthTokenObj = JSON.parse( response.getResponseAsString() );
var oauthToken = oauthTokenObj.access_token;
accessLog += "oauthToken: " + oauthToken + "\n";
var uriExecute = "https://api.twitter.com/1.1/statuses/user_timeline.json";
var responseExecute = httpClient.begin()
.bearer( oauthToken )
.queryParam( "screen_name", "{スクリーン名}" )
.queryParam( "count", 3 )
.get( uriExecute );
accessLog += "---GET request--- " + responseExecute.getStatusCode() + "\n";
accessLog += responseExecute.getResponseAsString() + "\n";
retVal.put( "0", accessLog );
ただし、このやり方で取得した access token の場合は user context とひもづかないので、使える API が限定されてしまうとのこと・・・まあ authorization_code のケースのようにユーザ認証を通ってないので当然といえば当然なのですが
※参考資料:Twitter API ドキュメント Application-only authentication
つまり、API をたたいて投稿等をしたい場合には以前からある OAuth1 の方を使わないといけないようです。ただ Questetra では OAuth1 での連携設定は未対応です・・・
そのため、API をたたいて投稿等がしたい場合には ifttt などの連携ツールと組み合わせるのが手っ取り早いかと思います。ifttt であれば、Questetra からメール送付して Twitter 投稿などもカンタンに実現できます。
4: まとめ
ということで、Questetra と Mastodon および Twitter との連携、主に OAuth2 での連携について調べてみました。
grant_type が authorization_code であれば、楽に設定できることがわかっていただけたかと思います。
ただ、grant_type が authorization_code であっても、相手によってはうまくつながらないケースもあります・・・そのあたりの話はまた別の記事で説明する予定です。
もし、ご質問等がありましたら、お問い合わせフォームからお気軽にご連絡ください。
Questetra の Trial モード(60日間無料)登録はこちら
こちらの Web フォームからお申込みいただきますと Questetra の無料お試しアカウントが作成できます。上記のものを含め、全ての機能が使えますので、ぜひお試しください。
ピンバック: 自動化は RPA だけじゃない!クラウド型ワークフローでの自動化事例いろいろ - Questetra
ピンバック: Questetra から他サービスの REST API を呼び出す場合の設定(Questetra が OAuth2 クライアントになる場合) – Questetra Support
ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra
ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra