고정 메뉴

이 문서는 고정 메뉴에 비공개 답장을 프로그래밍 방식으로 추가하는 방법을 보여줍니다.

중첩 고정 메뉴

Android용 Messenger from Meta(v276+)에서는 더 이상 중첩 고정 메뉴를 지원하지 않습니다. 중첩 메뉴 항목이 포함된 페이지는 모든 환경(웹, iOS 및 Android(v276+))에서 단순 리스트로 렌더링됩니다. 이렇게 하면 Messenger에서 사용자에게 훨씬 더 나은 경험을 제공할 수 있을 것입니다. 그래프 API v8.0의 Messenger 프로필 API와 맞춤 사용자 설정 API에서 중첩 메뉴 지원이 중단되고 모든 버전에 2년 핵심 변경 사항으로 적용됩니다.

사용 방법

고정 메뉴를 사용하면 운영 시간, 매장 위치, 제품 등과 같은 비즈니스의 메인 기능 메뉴를 만들고 보낼 수 있으며, 사용자가 Messenger에서 비즈니스와 나누는 대화에 항상 표시됩니다.

사용자가 메뉴에 있는 항목을 클릭하면 postback Webhooks가 서버로 전송됩니다. Webhooks 알림에는 누가 어떤 항목을 선택했는지에 대한 정보가 포함됩니다. 이렇게 항목을 선택하면 표준 메시지 기간이 시작됩니다. 24시간 안에 해당 사용자에게 응답해야 합니다.

명령어가 설정되면 명령어는 고정 메뉴보다 우선하게 됩니다.

요구 사항

고정 메뉴를 표시하려면 다음 조건을 충족해야 합니다.

  • 사용자가 iOS 또는 Android에서 Messenger v106 이상을 실행해야 합니다.
  • Messenger 봇이 받아보는 Facebook 페이지가 공개 상태여야 합니다.
  • 앱 설정에서 Messenger 봇을 '전체 공개'로 설정해야 합니다.
  • Messenger 봇에 pages_messaging 권한이 있어야 합니다.
  • Messenger 봇에 시작하기 버튼 세트가 있어야 합니다.

지원되는 버튼

고정 메뉴는 버튼의 배열로 구성됩니다. 다음과 같은 버튼 유형이 고정 메뉴에서 지원됩니다.

고정 메뉴 설정

고정 메뉴를 설정하려면 Messenger 프로필 API에 봇의 Messenger 프로필의 persistent_menu 속성을 설정하도록 POST 요청을 보내세요.

그래프 API v8.0+에서는 사용 중단된 중첩 레벨 메뉴 대신 call_to_actions 배열에서 최대 20개 버튼을 허용합니다.

{
    "persistent_menu": [
        {
            "locale": "default",
            "composer_input_disabled": false,
            "call_to_actions": [
                {
                    "type": "postback",
                    "title": "Talk to an agent",
                    "payload": "CARE_HELP"
                },
                {
                    "type": "postback",
                    "title": "Outfit suggestions",
                    "payload": "CURATION"
                },
                {
                    "type": "web_url",
                    "title": "Shop now",
                    "url": "https://www.originalcoastclothing.com/",
                    "webview_height_ratio": "full"
                }
            ]
        }
    ]
}

중첩 고정 메뉴

이 기능은 v8.0+에 사용 중단됩니다.

작성 도구 비활성화

작성 도구를 비활성화하여 사람들이 고정 메뉴만으로 Messenger 봇을 사용할 수 있도록 설정할 수도 있습니다. 이 기능은 봇이 매우 특정한 목적이나 옵션 세트를 가지고 있는 경우에 유용합니다.

이렇게 하려면 고정 메뉴를 만들 때 "composer_input_disabled":true를 설정하세요.

현지화

사용자의 로캘을 기반으로 표시될 고정 메뉴에 적용할 수 있도록 기본 및 현지화된 버튼 텍스트를 제공할 수 있습니다.

이렇게 하려면 각 로캘에 대한 persistent_menu 배열에서 별도의 개체를 지정하세요. 각 개체의 로캘을 지정하려면 locale 속성을 지원되는 로캘로 설정하세요.

{
  "locale":"default",
  "call_to_actions":[...]
},
{
  "locale: "zh_CN",
  "call_to_actions":[...]
}

사용자 레벨 메뉴

새로운 기능

2019년 12월 4일에 고정 메뉴가 동적 변경 사항을 지원하도록 개선하여 대화 환경을 더욱 개인화할 수 있도록 했습니다.

페이지 레벨 고정 메뉴는 사용자 레벨 설정으로 다시 정의할 수 있습니다. 이렇게 하면 앱에서 다음 항목을 동적으로 제어할 수 있게 됩니다.

  • 메뉴에서 사용자에게 제공되는 행동 유도 버튼
  • 사용자에게 표시되는 구성 도구

사용자 레벨 설정을 활성화하거나 비활성화할 때 custom_user_settings라는 다른 엔드포인트를 사용합니다. 이 엔드포인트는 POST, GET 및 DELETE 호출을 지원합니다.

페이지 레벨 고정 메뉴에 제공되는 것과 동일한 구성이 사용자 레벨에 적용됩니다. 가장 큰 차이는 재정의를 적용할 사용자를 나타내는 데 psid 매개변수가 필요하다는 것입니다.

참고: 사용자 수준 고정 메뉴는 실시간으로 업데이트되고 페이지 수준 고정 메뉴가 업데이트되는 데 최대 24시간 소요될 수 있습니다.

사용자 레벨 설정은 사용자 한 명당 10분에 호출 10건으로 제한됩니다.

POST 요청 예시

이 사용자의 기존 페이지 레벨 설정을 재정의합니다.

curl -X POST -H "Content-Type: application/json" -d '{
  "psid": "<PSID>",
  "persistent_menu": [
        {
            "locale": "default",
            "composer_input_disabled": false,
            "call_to_actions": [
                {
                    "type": "postback",
                    "title": "Talk to an agent",
                    "payload": "CARE_HELP"
                },
                {
                    "type": "postback",
                    "title": "Outfit suggestions",
                    "payload": "CURATION"
                },
                {
                    "type": "web_url",
                    "title": "Shop now",
                    "url": "https://www.originalcoastclothing.com/",
                    "webview_height_ratio": "full"
                }
            ]
        }
    ]
}' "https://graph.facebook.com/v19.0/me/custom_user_settings?access_token=<PAGE_ACCESS_TOKEN>"

GET 요청 예시

기존 사용자 및 페이지 레벨 설정을 가져옵니다. 사용자 레벨 설정이 없으면 페이지 레벨 설정만 반환됩니다.

curl -X GET "https://graph.facebook.com/v19.0/me/custom_user_settings?psid=<PSID>&access_token=<PAGE_ACCESS_TOKEN>"

결과

{
    "data": [
      {
        "user_level_persistent_menu": [
            {
              "locale": "default",
              "composer_input_disabled": false,
              "call_to_actions": [
                  {
                      "type": "postback",
                      "title": "Talk to an agent",
                      "payload": "CARE_HELP"
                  },
                  {
                      "type": "postback",
                      "title": "Outfit suggestions",
                      "payload": "CURATION"
                  },
                  {
                      "type": "web_url",
                      "title": "Shop now",
                      "url": "https://www.originalcoastclothing.com/",
                      "webview_height_ratio": "full"
                  }
              ]
            }
        ],
        "page_level_persistent_menu": [
          Original Page Menu...
        ]  
      }
  ]
}

DELETE 요청 예시

사용자 레벨 설정을 제거하고 페이지 레벨 메뉴가 설정되어 있다면 해당 메뉴만 남깁니다.

curl -X DELETE 'https://graph.facebook.com/v19.0/me/custom_user_settings?psid=<PSID>&params=[%22persistent_menu%22]&access_token=<PAGE_ACCESS_TOKEN>'

고정 메뉴 비활성화

채팅 플러그인에서 봇에 대한 고정 메뉴를 비활성화하는 것이 바람직한 경우가 있습니다. 이렇게 하려면 고정 메뉴를 설정할 때 "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"]을 추가하세요.

Messenger 프로필 API 페이로드 예시

{
  "persistent_menu":[
    {
      "locale":"default",
      "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"],
      "composer_input_disabled": false,      
      "call_to_actions":[
        {
          "title":"My Account",
          "type":"postback",
          "payload":"PAYBILL_PAYLOAD"
        }
      ]
    }
  ]
}

모범 사례

버튼과 마찬가지로 메뉴 항목에서 윕 보기 또는 포스트백을 만들 수 있습니다. 2차 레벨 메뉴는 지원되지 않습니다.

봇 기능으로의 진입점에 대한 메뉴를 사용하세요.

자세히 설명하세요. 메뉴를 사용하면 사람들에게 봇의 기능을 알려줄 수 있습니다. 봇으로 어떤 작업을 할 수 있는지 사람들이 즉시 알 수 있습니다.

사용자 환경은 봇의 핵심 기능만 대표하도록 메뉴 항목을 5개로 제한하는 것이 좋습니다.

메뉴에 사용자별 데이터가 포함될 것이라고 기대하지 마세요. 메뉴는 모든 봇 사용자에게 동일하게 표시되나 현지화는 가능합니다.

사용자에게 메뉴가 포함된 메시지를 보내는 '메뉴' 버튼을 메뉴에 추가하지 마세요. 메뉴에 직접 콘텐츠를 포함하세요. 이것이 메뉴의 용도입니다!

'다시 시작'과 같은 일반 액션을 메뉴에 포함하지 마세요.

기본 메뉴 공간을 정보, 서비스 약관, 개인정보처리방침, '제공' 등 보조 '판권 페이지' 스타일의 정보에 사용하지 마세요. 봇의 기본 기능이 표시되지 않습니다.

개발자 지원