1

全て。この問題については、このフォーラムやオンラインの他の場所で調べてみました。私は困惑しています。誰かが助けてくれることを願っています。

Keyboard Maestro を使用して JSON を Zendesk API に送信し、ユーザーをグループに追加する際に問題が発生しています。BashシェルスクリプトでCURLを介して実行しています。これが Zendesk API の問題であると考える前に、ご容赦ください。私は本当にそれが KM か、KM でやっている何かばかげたことだと思います。(たぶん後者!)

KM から実行されるこのような Bash スクリプトは、完全に機能します。

curl https://yoursite.zendesk.com/api/v2/group_memberships/create_many.json \
-X POST -d '{"group_memberships": [{"user_id": 123, "group_id": 1}, {"user_id": 456, "group_id": 1}, {"user_id": 789, "group_id": 1}]}' \
-H "Content-Type: application/json" -v -u (email address here):(password here)

しかし、KM 変数 ($KMVAR_CURL_Text) を介して、user_id および group_id 情報を bash スクリプトに渡したいと考えています。

$KMVAR_CURL_Text 変数の内容は、上記の手動スクリプトの user_id および group_id 情報と正確に一致します。JSONバリデーターを介して変数テキストを実行しました。大丈夫だよ。手動で変数データを bash スクリプトに貼り付けましたが、問題ありません。

しかし、変数 $KMVAR_CURL_Text を使用すると、次のようになります。

'{"group_memberships": [{"user_id": 123, "group_id": 1}, {"user_id": 456, "group_id": 1}, {"user_id": 789, "group_id": 1}]}'

シェルスクリプトで:

curl https://yoursite.zendesk.com/api/v2/group_memberships/create_many.json \
-X POST -d $KMVAR_CURL_Text \
-H "Content-Type: application/json" -v -u (email address here):(password here)

Zendesk の API は次のように教えてくれます。

< HTTP/1.1 400 Bad Request
< Server: nginx
< Date: Mon, 21 Sep 2015 15:09:21 GMT
< Content-Type: application/json; charset=UTF-8
< Content-Length: 111
< Connection: keep-alive
< Status: 400 Bad Request
< X-Zendesk-API-Version: v2
< X-Zendesk-API-Warn: Removed restricted keys ["'{\"group_memberships\":"] from parameters according to whitelist

これをZendeskと一緒に取り上げることができてうれしく思います. しかし、これを手動で機能させることができるので、問題は私または KM にあるように感じます。誰が私が間違っているのか分かりますか? たぶん、変数に関連するエスケープ、非エスケープ、またはテキストエンコーディングの何か?

ありがとう!

マーク:-)

4

1 に答える 1

2

特にやむを得ない理由がない限り、常にシェル展開を引用してください。

-d "$KMVAR_CURL_Text"

それ以外の場合、文字列は文字列分割 (の内容で分割された複数の単語になるIFS) とグロブ展開 (これらの単語のそれぞれがグロブ式として扱われ、場合によってはファイル名のリストに置き換えられる) を経ます。

于 2015-09-21T16:34:56.447 に答える