Facebook Messenger,发送收据时临时发送消息失败

Mr.*_*r.D 1 javascript facebook node.js facebook-messenger

我想用虚拟数据发送给用户我的收据.

我使用这个库简化了发送到Facebook的消息.

我的有效载荷的结构是这样的:

var payload = {
    template_type: 'receipt',
    recipient_name: '@' + user.name + ' ' + user.surname,
    order_number: (new Date).getTime(),
    currency: 'USD',
    payment_method: '?????????',
    order_url: 'http://www.example.com',
    timestamp: (new Date).getTime() + '',
    elements: [
        {
            title: title,
            subtitle: subtitle,
            quantity: 1,
            price: 20,
            currency: 'USD',
            image_url: image_url
        }
    ],
    address: {
        street_1:"Nurly tau",
        street_2:"",
        city:"Almaty",
        postal_code:"050000",
        state:"KZ",
        country:"KZ"
    },
    summary: {
        subtotal: 20,
        shipping_cost: 0,
        total_tax: 0,
        total_cost: 20
    },
    adjustments: []
};
Run Code Online (Sandbox Code Playgroud)

我刚用简单的假数据填写了收据字段.此外,Facebook追踪order_numbers所有发送的收据的唯一性.

当我尝试发送此收据时,我收到一条错误消息:

{ message: '(#1200) Temporary send message failure. Please try again later',
  type: 'OAuthException',
  code: 1200,
  fbtrace_id: 'BHmHRCEQUC4' }
Run Code Online (Sandbox Code Playgroud)

这个错误是什么意思?Facebook的错误信息如此神秘?

Gui*_*ndi 7

我只是遇到了同样的问题,经过一番摆弄后我才明白了!问题是当你使用(new Date).getTime()它构造时间戳时,返回自纪元以来的毫秒数.然而,Facebook要求它在几秒钟内.

  • 即你应该传递像'parseInt(((new Date).getTime())/ 1000).toString()这样的东西. (3认同)

小智 5

我遇到了同样的问题,经过多次尝试,我发现问题在于使用timestampJSON有效负载传递的参数.

我不知道它可能是什么,但它对我有用.(也许,时间戳应该在API调用之前暂时,我不知道).

  • 哇.同样在这里.我很高兴我找到了这个...我会在这里玩弄多年. (2认同)