SlackBot OpenModalエラー:「文字セットがありません」

Aug 23 2020

Zapier経由でAPI呼び出しを行い、Slackでモーダルを開きたいです。

しかし、私は常にエラーが発生します:

ok: false
error:  invalid_json
warning:    missing_charset
response_metadata:
warnings:
1:  missing_charset

これは私のリクエストボディです:

{
"token":"XXXXXXXXX",
"trigger_id":"XXXXXXXXXX",
"dialog": {
  "callback_id": "projekt-verantwortliche",
  "title": "Projektverantwortliche auswählen",
  "submit_label": "Request",
  "state": "Limo",
  "elements": [
    {
      "type": "users_select",
      "action_id": "projekt-projektleiter",
      "placeholder": {
         "type":"plain_text",
         "text":"Projektleiter auswählen"
        },
    },
     {
      "type": "users_select",
      "action_id":"projekt-berater",
      "placeholder": {
         "type":"plain_text",
         "text":"Berater auswählen"
        }
    }
  ]
}
}

私は何が間違っているのですか?

通話全体のスクリーンショットは次のとおりです。

回答

1 flaxel Aug 23 2020 at 19:00

解決策はこのドキュメントにあります:

POST本文に含めたJSONは解析できません。これは、実際にはJSONではないか、HTTPContent-typeヘッダーを正しく設定しなかったことが原因である可能性があります。JSON属性キーが二重引用符( ")文字でラップされた文字列であることを確認してください。

カンマを1つ削除するだけで、機能するはずです。

{
   "token":"XXXXXXXXX",
   "trigger_id":"XXXXXXXXXX",
   "dialog":{
      "callback_id":"projekt-verantwortliche",
      "title":"Projektverantwortliche auswählen",
      "submit_label":"Request",
      "state":"Limo",
      "elements":[
         {
            "type":"users_select",
            "action_id":"projekt-projektleiter",
            "placeholder":{
               "type":"plain_text",
               "text":"Projektleiter auswählen"
            }
         },
         {
            "type":"users_select",
            "action_id":"projekt-berater",
            "placeholder":{
               "type":"plain_text",
               "text":"Berater auswählen"
            }
         }
      ]
   }
}

content-typeヘッダーに文字セットを設定すると、警告を削除できmissing_charsetます。例えば:

Content-type: application/json; charset=utf-8