인터랙티브 메시지 템플릿 보내기

인터랙티브 메시지 템플릿에서는 표준 메시지 템플릿과 미디어 메시지 템플릿 유형 외에도 components 개체를 사용하는 인터랙티브 버튼을 포함하도록 수신자에게 보낼 수 있는 콘텐츠가 확대됩니다.

사전 정의된 버튼은 다음의 두 가지 유형이 제공됩니다.

  • 행동 유도 — 고객이 전화번호로 전화를 걸고 웹사이트를 방문할 수 있도록 합니다.
  • 빠른 답장 — 고객이 간단한 문자 메시지를 답신으로 보낼 수 있도록 합니다.

이들 버튼은 문자 메시지나 미디어 메시지에 첨부할 수 있습니다. 인터랙티브 메시지 템플릿을 만들고 승인하고 나면, 이를 알림 메시지 및 고객 서비스/관리 메시지에 사용할 수 있습니다.

시작하기 전에

다음과 같은 작업을 수행해야 합니다.

메시지 템플릿이 승인되면 API를 사용하여 메시지를 보낼 수 있습니다.

제약 사항

  • 행동 유도 템플릿의 경우 유형별로 한 개씩 총 2개의 버튼을 추가할 수 있습니다(전화 통화 및 웹사이트 방문).
  • 빠른 답장 템플릿의 경우 최대 3개의 버튼을 추가할 수 있습니다.

1단계: /messagesPOST 요청 보내기

POST /v1/messages
{
    "to": "recipient_wa_id",
    "type": "template",
    "template": {
        "namespace": "your-namespace",
        "language": {
            "policy": "deterministic",
            "code": "your-language-and-locale-code"
        },
        "name": "your-template-name",
        "components": [
            {
                "type" : "header",
                "parameters": [
                    {
                        "type": "text",
                        "text": "replacement_text"
                    }
                ]
            # end header
            },
            {
                "type" : "body",
                "parameters": [
                    {
                        "type": "text",
                        "text": "replacement_text"
                    },
                    {
                        "type": "currency",
                        "currency" : {
                            "fallback_value": "$100.99",
                            "code": "USD",
                            "amount_1000": 100990
                        }
                    },
                    {
                        "type": "date_time",
                        "date_time" : {
                            "fallback_value": "February 25, 1977",
                            "day_of_week": 5,
                            "day_of_month": 25,
                            "year": 1977,
                            "month": 2,
                            "hour": 15,
                            "minute": 33, #OR
                            "timestamp": 1485470276
                        }
                    },
                    {
                        ...
                        # Any additional template parameters
                    }
                ] 
            # end body
            },

            # The following part of this code example includes several possible button types, 
            # not all are required for an interactive message template API call.
            {
                "type": "button",
                "sub_type" : "quick_reply",
                "index": "0", 
                "parameters": [
                    {
                        "type": "payload",
                        # Business Developer-defined payload
                        "payload":"aGlzIHRoaXMgaXMgY29vZHNhc2phZHdpcXdlMGZoIGFTIEZISUQgV1FEV0RT"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type" : "url",
                "index": "1", 
                "parameters": [
                    {
                        "type": "text",
                        # Business Developer-defined dynamic URL suffix
                        "text": "9rwnB8RbYmPF5t2Mn09x4h"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type" : "url",
                "index": "2",
                "parameters": [
                    {                    
                        "type": "text",
                        # Business Developer-defined dynamic URL suffix
                        "text": "ticket.pdf"
                    }
                ]
            }
        ]
    }
}

매개변수

2단계: API 응답 확인

성공적인 응답에는 id가 있는 messages 개체가 포함됩니다.

{
  "messages": [{
    "id": "gBEGkYiEB1VXAglK1ZEqA1YKPrU"
  }]
}

실패한 응답에는 오류 문자열, 오류 코드 및 기타 정보가 있는 오류 개체가 포함됩니다.

템플릿을 수신할 수 없는 계정으로 템플릿을 보내는 경우 구성된 Webhook 서버에 오류 개체의 1026 (ReceiverIncapable) 오류가 전송됩니다.

오류에 대한 자세한 내용은 오류 및 상태 코드를 참조하세요.

3단계(선택 사항): 사용자 행동 처리

사용자가 빠른 답장 버튼을 클릭하면 응답이 비즈니스로 다시 전송됩니다. 자세한 내용은 빠른 답장 버튼 클릭 시 콜백을 참조하세요. 또한 사용자는 버튼을 클릭하지 않고 자유 양식 메시지를 보낼 수도 있습니다.

빠른 답장 버튼 클릭에서 콜백

고객이 빠른 답장 버튼을 클릭하면 응답이 전송됩니다. 콜백 형식의 예는 다음과 같습니다. 참고: 고객이 버튼을 클릭하지 않고 인터랙티브 메시지에 답장을 하거나 메시지만 보낼 수도 있습니다. 이런 유형의 시나리오도 지원할 수 있는지 확인하세요. 자세한 내용은 Webhooks 문서를 참조하세요.
{
    "contacts": [
        {
            "profile": {
                "name": "Kerry Fisher"
            },
            "wa_id": "16505551234"
        }
    ],
    "messages": [
        {
            "button": {
                "payload": "No-Button-Payload",
                "text": "No"
            },
            "context": {
                "from": "16315558007",
                "id": "gBGGFmkiWVVPAgkgQkwi7IORac0"
            },
            "from": "16505551234",
            "id": "ABGGFmkiWVVPAgo-sKD87hgxPHdF",
            "timestamp": "1591210827",
            "type": "button"
        }
    ]
    # If there are any errors, an errors field (array) will be present        
    "errors": [ { ... } ]
}

이 예시에서는 비즈니스 관리자에서 템플릿을 만들고 API 호출을 통해 메시지 템플릿을 messages 엔드포인트에 보내는 인터랙티브 메시지 템플릿의 설정 과정을 보여줍니다.

여행 알림

이 예시에서는 빠른 답장 버튼이 포함된 인터랙티브 미디어 메시지 템플릿을 만드는 방법을 보여줍니다.

1. 비즈니스 관리자에서 인터랙티브 미디어 메시지 템플릿을 만듭니다.

2. messages API 호출이 매개변수 정보에 추가됩니다.

POST /v1/messages
{
    "to": "your-test-recipient-wa-id",
    "recipient_type": "individual",
    "type": "template",
    "template": {
        "namespace": "88b39973_f0d5_54e1_29cf_e80f1e3da4f2",
        "name": "upcoming_trip_reminder",
        "language": {
            "code": "en",
            "policy": "deterministic"
        },
        "components": [
            {
                "type": "header",
                "parameters": [
                    {
                        "type": "text",
                        "text": "12/26"
                    }
                ]
            },
            {
                "type": "body",
                "parameters": [
                    {
                        "type": "text",
                        "text": "*Ski Trip*"
                    },
                    {
                        "type": "date_time",
                        "date_time" : {
                            "fallback_value": "29th July 2019, 8:00am",
                            "day_of_month": "29",
                            "year": "2019",
                            "month": "7",
                            "hour": "8",
                            "minute": "00"
                        }
                    },
                    {
                            "type": "text",
                            "text": "*Squaw Valley Ski Resort, Tahoe*"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type": "quick_reply",
                "index": 0,
                "parameters": [
                    {
                        "type": "payload",
                        "payload": "Yes-Button-Payload"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type": "quick_reply",
                "index": 1,
                "parameters": [
                    {
                        "type": "payload",
                        "payload": "No-Button-Payload"
                    }
                ]
            }
        ]
    }
}

3. 고객이 빠른 답장 버튼이 포함된 여행 알림 메시지를 받습니다.

제품 배송

이 예시에서는 URL과 전화번호 버튼이 포함된 인터랙티브 미디어 메시지 템플릿을 만드는 방법을 보여줍니다.

1. 비즈니스 관리자에서 인터랙티브 미디어 메시지 템플릿을 만듭니다.

2. messages API 호출이 매개변수 정보에 추가됩니다.

POST /v1/messages
{
    "to": "your-test-recipient-wa-id",
    "recipient_type": "individual",
    "type": "template",
    "template": {
        "namespace": "88b39973_f0d5_54e1_29cf_e80f1e3da4f2",
        "name": "oculus_shipment_update",
        "language": {
            "code": "en",
            "policy": "deterministic"
        },
        "components": [
            {
                "type": "header",
                "parameters": [{
                    "type": "image",
                    "image": {
                        "link": "link-to-your-image"
                    }
                }]
            },
            {
                "type": "body",
                "parameters": [
                    {
                        "type": "text",
                        "text": "Anand"
                    },
                    {
                        "type": "text",
                        "text": "Quest"
                    },
                    {
                        "type": "text",
                        "text": "113-0921387"
                    },
                    {
                        "type": "date_time",
                        "date_time" : {
                            "fallback_value": "23rd Nov 2019",
                            "day_of_month": "20",
                            "year": "2019",
                            "month": "9"
                        }
                    }
                ] 
            },
            {
                "type": "button",
                "index": "0",
                "sub_type": "url",
                "parameters": [
                    {
                        "type": "text",
                        "text": "1Z999AA10123456784"
                    }
                ]
            }
        ]
    }
}

3. 고객이 URL과 전화번호 버튼이 포함된 제품 배송 메시지를 받습니다.