You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Messenger Bot模板回复多维数组格式校验与优化请求

Fixing Your Messenger Bot Attachment Template Format

Hey Steve! Let's get that attachment template sorted out—Messenger Platform has strict formatting rules for these templates, so I'll start with the standard valid structure for a generic template (which supports images + descriptions perfectly), then walk you through how to align your array to it.

First, the Standard Generic Template Structure

This is the exact format Facebook expects for a template reply with images and descriptive text. I'll use a JavaScript array example since it's common for bot development:

const attachmentReply = {
  "attachment": {
    "type": "template",
    "payload": {
      "template_type": "generic",
      "elements": [
        {
          "title": "Your Item Title", // Required field
          "image_url": "https://your-public-image-url.com/image.jpg", // Required (must be publicly accessible)
          "subtitle": "Short description of the item here—this is your custom text blurb", // Optional but ideal for your use case
          "buttons": [ // Optional, add if you want action buttons
            {
              "type": "web_url",
              "url": "https://example.com",
              "title": "Learn More"
            }
          ]
        },
        // Add more objects here if you want multiple card-style replies
      ]
    }
  }
};

Common Issues to Check in Your Custom Array

If your current multidimensional array isn't working, here are the most frequent missteps to fix:

  • Missing required fields: title and image_url are mandatory for each element in a generic template.
  • Incorrect hierarchy: The elements array must live inside payload, which in turn is nested under attachment—it's easy to mess up this nesting!
  • Invalid image URL: Your image has to be publicly reachable (no local file paths or behind-login URLs).
  • Typos: Double-check key names like template_type (not templateType), image_url (not imageUrl), and elements (not element).

Example of Adjusting Your Array

Suppose your original array looked like this (a common incorrect version):

// Wrong structure
const badReply = [
  "type": "template",
  "items": [
    {
      "img": "my-image.jpg",
      "text": "My description"
    }
  ]
];

Here's how to fix it to match the standard format:

// Corrected structure
const goodReply = {
  "attachment": {
    "type": "template",
    "payload": {
      "template_type": "generic",
      "elements": [
        {
          "title": "Product Name", // Added required title
          "image_url": "https://your-domain.com/my-image.jpg", // Fixed to public URL + correct key name
          "subtitle": "My description" // Renamed from "text" to standard "subtitle"
        }
      ]
    }
  }
};

Quick Test Tip

Once you've adjusted your array, send a test request to the Messenger Send API—if you get a 200 OK response, your format is valid! If not, the error message will usually point directly to which field needs fixing.

内容的提问来源于stack exchange,提问作者Steve I

火山引擎 最新活动