2016-03-02 64 views
4

我正在使用botkit by howdy为api调用postMessage方法。当我传递附件属性时,它给我invalid_array_arg错误。它获取POST的方式有问题Slackbot附件 - 有什么问题吗?

bot.api.chat.postMessage(
     { 
      channel : '#general', 
      text : 'hi', 
      parse : true, 
      username: '@' + bot.identity.name, 
      as_user : true, 
      icon_url: listOfMessages.logoUrl, 
      attachments: [{"pretext": "pre-hello", "text": "text-world"}] 

     }, function (err,res) { 
      if(err) console.log(err); 
      console.log(res); 
     } 
    ); 
+0

来自Slack文档的错误消息:'该方法传递了一个PHP风格的数组参数(例如,名称为foo [7])。这些从来都不适用于Slack API.' [Link](https://api.slack.com/methods/chat.postMessage) –

回答

14

我遇到了同样的问题,并通过对数组进行了字符串化处理。

attachments: JSON.stringify([{"pretext": "pre-hello", "text": "text-world"}]) 
+2

在ruby slack-api gem中有同样的问题。 重要的是对整个附件数组转换成JSON,不只是在附件中,例如所述对象: '附件:[附件] .to_json' – andrewleung

+0

它实际上是注意到作为[松弛API的一部分文档](https://api.slack.com/methods/chat.update):“_可选附件参数应该包含一个JSON编码的附件数组......” –

+0

但https://api.slack.com /methods/chat.postMessage/test这也不起作用,需要添加附件才能添加文本,这些文本仅在短文中发布文本 – sunil