2017年5月13日土曜日

FileMaker 16 URLから挿入|POST Message To ChatWork

FileMaker 16
スクリプト:URLから挿入 でカスタムヘッダーの指定ができるようになったので、ChatWorkへメッセージを送信してみる。

フィールドを作成
テーブル:Post_cURL
 フィールド:
 URL
 room_id
 messages
 Result
 message_id

テーブル:settings
 フィールド:api_token

テーブル:Post_cURL と テーブル:settings はデカルト積リレーションでつなぐ。


■スクリプト作成

スクリプト名:post_message
URL から挿入 [選択; ダイアログあり:オフ; $json;
/*URLを指定*/
Substitute ( Post_cURL::URL ; "{room_id}" ; Post_cURL::room_id )
;
cURL オプション:
Let([
¢option="
--request POST
--header X-ChatWorkToken:{api_token}
--data-binary body={messages}"
];
Substitute ( ¢option ;
["{api_token}" ; settings::api_token]
; ["{messages}" ; GetAsURLEncoded ( Post_cURL::messages ) ]
)
)
;URL を自動的にエンコードしない]

POSTするだけなら、スクリプト:URL から挿入  だけでOK!

POSTに成功した場合、変数:$json に {"message_id":"2001*******"}  が返ってきます。
cURLオプションの --data-binary body={messages} は、--Form だと改行が無くなります。
--data body={messages} これでもイケるみたいです。

■戻り値の解析:
JSON関連の関数が追加されたので、解析がカンタンです。
関数:JSONGetElement ( $json ; "message_id" ) とするだけ。

FileMaker 16 の スクリプト:URLから挿入 は、まんま、cURL(https://curl.haxx.se/)が組み込まれている様子。
なので、上記で設定した cURL オプションが、curl.exe でそのまま使えます。
FileMaker 15 以前のバージョンの場合は、
$URL=
$cURL_option=
としておいて
Event を送信 [「aevt」; 「odoc」;
"C:\curl\curl.exe " & $URL & " " & $cURL_option ]
としておけば、16への移行時に楽なのと、バージョンが混在していてもスクリプトの切り替えが楽です。
ただ、このままだと、戻り値の取得ができません。
戻り値の取得方法は、以下が参考になります。

FileMaker cmd.exe dirコマンドを実行して戻り値を取得。あれこれ。

1 件のコメント: