初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2021-04-17 10:26:56

k16
Member

FileMakerからSlackへ通知を送信したいのですが、文字列に半角スペースが含まれると失敗します(URLから挿入・cURL・JSON)

お世話になります。
当方の環境は、FileMakerServer16(Mac)と FileMakerPro18Advanced(Mac)です。

会計データベースにお客様からの請求書レコードが登録されたタイミングで、FileMakerスクリプトを利用して、支払い担当者にSlackで通知を送りたいと考えています。
請求書テーブルには、「請求元社名」フィールドと「請求額」フィールドがあり、通知の文面は変数$textで以下のように設定してあります。

変数を設定 [ $text ; 値: 請求書::請求元社名 & "から、" & "$" & 請求書::請求額 & "の請求があります。" ]

例として、「請求元社名」フィールドが "ABC Limited"、請求額」フィールドが "123.45" の場合、
「ABC Limitedから、$123.45の請求があります。」
との文面で通知したいわけです。

Slackへのポストですが、「URLから挿入」スクリプトで、以下のようにcURLオプションを指定してあります(channelの"#会計処理"とusernameの"AccountBook"はwebhookのパラメータです)。

"curl -X POST -H Content-Type: application/json -data-binary " &
JSONSetElement ( "{}" ;
["text"; $text ; JSONString];
["channel"; "#会計処理" ; JSONString];
["username"; "AccountBook" ; JSONString]
)

困ったことに、変数$textに格納されるテキストに半角スペースが含まれると、通知に失敗してしまいます。
先ほどの例ですと、「ABC Limited」の中に半角スペースがあるために上手くいきません(試しに、TrimAllでスペースを除去すると通知できました)。
また、参考になるかはわかりませんが、
["username"; "AccountBook" ; JSONString]
を"Account Book"と半角スペースを入れた場合も通知に失敗します。

なにかcURLの構文に不備があるのかと思っていますが、ご教授をいただければ幸いです。
よろしくお願いいたします。

Last edited by k16 (2021-04-17 10:43:37)

Offline

#2 2021-04-17 15:50:44

himadanee
Guest

Re: FileMakerからSlackへ通知を送信したいのですが、文字列に半角スペースが含まれると失敗します(URLから挿入・cURL・JSON)

"curl -X POST -H Content-Type: application/json -data-binary " &

「オプション」であって「コマンドライン」でないので、「curl」は不要。

この部分も引数の値にスペースがあるので、クオートが必要です。
"-X POST -H \"Content-Type: application/json\" -data-binary " &

データの方も同様です。が、データ自体に"が含まれてるので、そこのエスケープが必要になるんじゃないでしょうか。

#3 2021-04-18 17:17:42

k16
Member

Re: FileMakerからSlackへ通知を送信したいのですが、文字列に半角スペースが含まれると失敗します(URLから挿入・cURL・JSON)

himadanee様

ご返信ありがとうございます。

ご指摘いただいた通りに、
"-X POST -H \"Content-Type: application/json\" -data-binary " &
と直しました。

データの方も同様とのことですが、具体的にどこの箇所を指しているか教えていただけますか?
ご面倒をおかけしますが、よろしくお願いします。

Offline

#4 2021-04-18 17:48:10

himadanee
Guest

Re: FileMakerからSlackへ通知を送信したいのですが、文字列に半角スペースが含まれると失敗します(URLから挿入・cURL・JSON)

JSONSetElement ( "{}" ; ~~
この計算結果全体が1つのオプション引数なので、スペースが含まれる場合オプションの区切り文字と誤認させないために全体を””の中に入れる必要があります。(スペースがあると、その手前までで終わりとみなされます)

Quote(JSONSetElement( ~~~
でいいのかなあ?
データ($text)に改行はありませんよね?

#5 2021-04-18 19:20:09

k16
Member

Re: FileMakerからSlackへ通知を送信したいのですが、文字列に半角スペースが含まれると失敗します(URLから挿入・cURL・JSON)

himadanee様

ありがとうございます!
Quote( )でJSON箇所を囲むことで解決しました。

データ($text)に改行は含まれていませんでしたが、含んだ場合でも問題なく通知できました。
最終的な設定内容を以下に記します。

-----------------------------------------------------------------------------------------------------------------------------------------------

変数を設定 [ $text ; 値: 請求書::請求元社名 & "から、" & ¶ & "$" & 請求書::請求額 & "の請求があります。" ]

「URLから挿入」スクリプトの、cURLオプション
"-X POST -H \"Content-Type: application/json\" --data-binary " &
Quote (
JSONSetElement ( "{}" ;
["text"; $text ; JSONString];
["channel"; "#会計処理" ; JSONString];
["username"; "Account Book" ; JSONString] )
)

-----------------------------------------------------------------------------------------------------------------------------------------------

この設定で、「請求元社名」フィールドが "ABC Limited"、「請求額」フィールドが "123.45" の場合、

ABC Limitedから、
$123.45の請求があります。

と通知が来ます。
usernameの"Account Book"も、半角スペースが入った形で表示されました。

himadanee様、本当にありがとうございました!

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 557.8 KiB (Peak: 581.87 KiB) ]