распечатать массив без stringify для Slack - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь вернуть массив, который я создаю.проблема в том, что я не хочу использовать stringify, поскольку он возвращает скобки.Я пробовал разные методы, но они на самом деле не работают, и я не уверен, что это проблема Slacks, или это в моем коде = /

Это то, что у меня есть.

let elements = [];
          for (let i in response.options) {
            let opt = response.options[i];
            elements.push(
              { 
                "actions"   : [
                  {
                      "name": opt.label,
                      "text": opt.label,
                      "type": "button",
                      "value": opt.value.input.text
                  }]
              }
            );
          }             
          payload = {
            "text": "Would you like to book?",
            attachments: [
              {
                "text": "Choose",
                "fallback": "You are unable to choose a game",
                "callback_id": "wopr_game",
                "color": "#3AA3E3",
                "attachment_type": "default",
                "actions": elements
              }
            ] 
          };
          console.log(payload)

моя консоль возвращает это.

{ text: 'Would you like to book?',
  attachments:
   [ { text: 'Choose',
       fallback: 'You are unable to choose a game',
       callback_id: 'wopr_game',
       color: '#3AA3E3',
       attachment_type: 'default',
       actions: [Array] } ] }

и даже stringify

{ text: 'Would you like to book?',
  attachments:
   [ { text: 'Choose',
       fallback: 'You are unable to choose a game',
       callback_id: 'wopr_game',
       color: '#3AA3E3',
       attachment_type: 'default',
       actions: '{"actions":{"name":"Book transport","text":"Book transport","type":"button","value":"transport"}},{"actions":{"name":"Book hotel","text":"Book hotel","type":"button","value":"hotel"}},{"actions":{"name":"Travel Policy","text":"Travel Policy","type":"button","value":"Travel Policy"}}' } ] }

Любые идеи о том, как я могу вернуть только текст, так что слабый рендеринг кнопок?

Заранее спасибо!

Обновление: если я добавлю жестко запрограммированное решение к полезной нагрузке, кнопки ослабления вернутся правильно.

  payload = {
            attachments: [
              {
                title: 'Do you want to interact with my buttons?',
                callback_id: '123',
                attachment_type: 'default',
                actions: [
                  {
                    "name": "yes",
                    "text": "Yes",
                    "value": "yes",
                    "type": "button",
                  },
                  {
                    "name": "no",
                    "text": "No",
                    "value": "no",
                    "type": "button",
                  }
                ]
              }
            ]
          };

1 Ответ

0 голосов
/ 12 декабря 2018

Итак, вы хотите установить свойство "elements" полезной нагрузки, равное только значениям в свойствах "actions.text" объектов внутри массива?Звучит как работа для Array.map :) При настройке элементов для полезной нагрузки попробуйте вместо этого:

"elements": elements.map(el => el.actions.text)
...