如果标题中包含变量,则无法打开Slack Dialog.open

时间:2019-05-17 10:18:41

标签: node.js slack slack-api

每当我尝试向对话框标题添加变量时,dialog.open均不起作用,并且不会引发任何错误。

如果我从标题中删除了变量,那么一切正常,只有当我将变量添加到标题中时,

我在定义对话框之前执行此操作

app.post('/create', function(req, res) {
  var users = []
  var {
    text, trigger_id
  } = req.body;
  text = text.toUpperCase()
  var issuetypes = []
  axios({
    method: 'get',
    url: baseURL + 'project/' + text
  }).then(function(response) {
    for (var i = 0; i < response.data.issueTypes.length; i++) {
      issuetypes.push({
        label: response.data.issueTypes[i].name,
        value: response.data.issueTypes[i].name
      });
    }

不起作用:

const dialog = {
      token: botToken,
      trigger_id,
      dialog: JSON.stringify({
        title: 'Create a new ' + text + ' Ticket',
        callback_id: 'submit-ticket',
        submit_label: 'Submit',
        elements: [{
          label: 'Project',
          type: 'text',
          name: 'project'
        }, {
          label: 'Summary',
          type: 'text',
          name: 'summary',
        }, {
          label: 'Description',
          type: 'textarea',
          name: 'description',
          optional: true,
        }, {
          label: 'Type',
          type: 'select',
          name: 'type',
          options: issuetypes,
        }, {
          label: 'Reporter',
          type: 'select',
          name: 'reporter',
          optional: true,
          options: [{
            label: 'Reporter',
            value: 'reporter'
          }, ],
        }, {
          label: 'Link',
          type: 'select',
          name: 'epic',
          optional: true,
          options: [{
            label: 'Epic',
            value: 'epic'
          }, ],
        }, ],
      }),
    };

作品:

const dialog = {
      token: botToken,
      trigger_id,
      dialog: JSON.stringify({
        title: 'Create a new Ticket',
        callback_id: 'submit-ticket',
        submit_label: 'Submit',
        elements: [{
          label: 'Project',
          type: 'text',
          name: 'project'
        }, {
          label: 'Summary',
          type: 'text',
          name: 'summary',
        }, {
          label: 'Description',
          type: 'textarea',
          name: 'description',
          optional: true,
        }, {
          label: 'Type',
          type: 'select',
          name: 'type',
          options: issuetypes,
        }, {
          label: 'Reporter',
          type: 'select',
          name: 'reporter',
          optional: true,
          options: [{
            label: 'Reporter',
            value: 'reporter'
          }, ],
        }, {
          label: 'Link',
          type: 'select',
          name: 'epic',
          optional: true,
          options: [{
            label: 'Epic',
            value: 'epic'
          }, ],
        }, ],
      }),
    };

然后我打电话给dialog.open

axios.post("https://slack.com/api/dialog.open", qs.stringify(dialog))
      .then(
        (result) => {
          res.send('');
        }).catch(function(err) {
        console.error(err);
      })
  }).catch(function(err) {
    console.error(err);
  })
});

关于dialog.open为什么不起作用的任何想法?

1 个答案:

答案 0 :(得分:1)

标题中包含变量时,不显示对话框的原因是标题超过了24个字符的最大长度。 (请参阅here作为参考)

不过,尽管dialog.open方法已记录,但您应该从API收到验证错误:

"The field `title` cannot be longer than 24 characters"

您还没有收到它的另一个原因。