Adicionar mensagens interativas do Amazon Lex para clientes no chat
As mensagens interativas são mensagens avançadas que apresentam opções de exibição rápidas e pré-configuradas para o cliente escolher. Essas mensagens são fornecidas pelo Amazon Lex e configuradas por meio do Amazon Lex usando um Lambda.
dica
Se você se integrou ao Apple Messages for Business, consulte Tipos de mensagens interativas
Limites de validação
Espera-se que os limites do campo de string (por exemplo, título, subtítulo etc.) sejam aplicados pelo cliente (ou seja, uma interface personalizada ou o widget de comunicação hospedado). A API SendMessage verifica somente se o tamanho total da string é menor que 20 KB.
-
Quando você usa o widget de comunicação hospedado sem personalizá-lo, se a string exceder os limites do campo, ela será truncada na interface do usuário e uma elipse (...) será anexada. Você pode determinar como impor limites de campo personalizando o widget.
-
Se você estiver se integrando a outras plataformas (como o Apple Messages for Business), revise os limites deste tópico para o Amazon Connect e revise os limites na documentação da outra plataforma. Por exemplo, respostas rápidas não são compatíveis com versões mais antigas do iOS.
Todos os outros limites de campo devem ser seguidos para que a mensagem seja enviada com sucesso.
Modelos de exibição de mensagens
O Amazon Connect fornece os seguintes modelos de exibição de mensagens para você usar para renderizar informações aos clientes em um chat:
Esses modelos definem como as informações serão renderizadas e quais informações serão exibidas na interface de chat. Quando mensagens interativas são enviadas pelo chat, os fluxos confirmam que o formato da mensagem segue um desses modelos.
Modelo de seletor de listas
Use o modelo de seletor de listas para apresentar ao cliente uma lista de até seis opções. Cada opção pode ter sua própria imagem.
As imagens a seguir mostram dois exemplos de como o modelo do seletor de listas renderiza informações em um chat.
-
Uma imagem mostra três botões, cada um com o nome de uma fruta no texto: maçã, laranja, banana.
-
A segunda imagem mostra a foto de uma loja e, abaixo dela, três botões, cada um com o nome, a imagem e o preço da fruta.
O código a seguir é o modelo de seletor de listas que você pode usar no Lambda. Observe o seguinte:
-
O texto em negrito é um parâmetro obrigatório.
-
Em alguns casos, se o elemento pai existir na solicitação e não for obrigatório/em negrito, mas os campos nele forem, então os campos são obrigatórios. Por exemplo, consulte a estrutura
data.replyMessage
no modelo a seguir. Se a estrutura existir, o título é obrigatório. Caso contrário, o preenchimento dereplyMessage
é opcional.
{ "templateType":"ListPicker", "version":"1.0", "data":{ "replyMessage":{ "title":"Thanks for selecting!", "subtitle":"Produce selected", "imageType":"URL", "imageData":"https://interactive-msg.s3-us-west-2.amazonaws.com/fruit_34.3kb.jpg", "imageDescription":"Select a produce to buy" }, "content":{ "title":"What produce would you like to buy?", "subtitle":"Tap to select option", "imageType":"URL", "imageData":"https://interactive-msg.s3-us-west-2.amazonaws.com/fruit_34.3kb.jpg", "imageDescription":"Select a produce to buy", "elements":[ { "title":"Apple", "subtitle":"$1.00", "imageType":"URL", "imageData":"https://interactive-message-testing.s3-us-west-2.amazonaws.com/apple_4.2kb.jpg" }, { "title":"Orange", "subtitle":"$1.50", "imageType":"URL", "imageData":"https://interactive-message-testing.s3-us-west-2.amazonaws.com/orange_17.7kb.jpg", }, { "title":"Banana", "subtitle":"$10.00", "imageType":"URL", "imageData":"https://interactive-message-testing.s3-us-west-2.amazonaws.com/banana_7.9kb.jpg", "imageDescription":"Banana" } ] }
Limites do seletor de listas
A tabela a seguir lista os limites de cada um dos elementos do seletor de listas, caso você opte por criar seu próprio Lambda do zero. Os parâmetros obrigatórios estão em negrito.
Para enviar opções ilimitadas, implemente botões de ação em seu aplicativo. Para obter mais informações, consulte Implementação de botões de ação no seletor de listas/painel interativo de mensagens
Campo principal | Campo | Obrigatório | Mínimo de caracteres | Máximo de caracteres | Outros requisitos |
---|---|---|---|---|---|
templateType |
Sim |
Tipo de modelo válido |
|||
data |
Sim |
||||
version |
Sim |
Deve ser “1.0” |
|||
data |
content | Sim | |||
replyMessage | Não | ||||
content |
title | Sim | 1 |
400 |
Deve ser uma descrição para modelos imediatos |
elements | Sim | 1 item |
10 itens |
Essa é uma matriz de elementos. Máximo de 10 elementos na matriz. Para enviar elementos ilimitados, use o recurso de botões de ação. |
|
subtitle | Não | 0 |
400 |
||
imageType | Não | 0 |
50 |
Deve ser “URL” |
|
imageData | Não | 0 |
200 |
Deve ser um URL válido e acessível ao público |
|
imageDescription | Não | 0 |
50 |
||
referenceId | Não |
|
String. Necessário apenas para o recurso de botão de ação. |
||
listId | Não |
|
String. Necessário apenas para o recurso de botão de ação. |
||
preIndex | Não |
|
Number. Necessário apenas para o recurso de botão de ação. |
||
nextIndex | Não |
|
Number. Necessário apenas para o recurso de botão de ação. |
||
templateIdentifier | Não |
|
Number. Deve ser um UUID. Esse campo será obrigatório se o seletor de listas/painel estiver sendo usado em um carrossel. |
||
elements |
title | Sim | 1 |
400 |
|
subtitle | Não | 0 |
400 |
||
imageType | Não | 0 |
50 |
Deve ser “URL” |
|
imageData | Não | 0 |
200 |
Deve ser um URL válido e acessível ao público |
|
imageDescription | Não | 0 |
50 |
Não pode existir sem uma imagem |
|
actionDetail | Não |
|
|
Necessário apenas para o recurso de botão de ação. Deve ser “PREVIOUS_OPTIONS” ou “SHOW_MORE”. |
|
replyMessage |
title | Sim | 1 |
400 |
|
subtitle | Não | 0 |
400 |
||
imageType | Não | 0 |
50 |
Deve ser “URL” |
|
imageData | Não | 0 |
200 |
Deve ser um URL válido e acessível ao público |
|
imageDescription | Não | 0 |
50 |
Não pode existir sem uma imagem |
Modelo de seletor de horário
O modelo de seletor de horário é útil para permitir que os clientes agendem compromissos. Você pode fornecer até 40 intervalos de tempo para o cliente em um chat.
As imagens a seguir mostram dois exemplos de como o modelo do seletor de horário renderiza informações em um chat.
-
Uma imagem mostra uma data e, abaixo dela, um horário.
-
A segunda imagem mostra uma data e, abaixo dela, dois horários.
A imagem a seguir mostra o seletor de horário com uma imagem
nota
Se você estiver usando esse modelo de mensagem com o canal Apple Messages for Business e não adicionar uma imagem, o Amazon Connect adicionará uma imagem padrão na mensagem de resposta e em “responder”.
O código a seguir é o modelo de seletor de horário que você pode usar no Lambda. Observe o seguinte:
-
O texto em negrito é um parâmetro obrigatório.
-
Em alguns casos, se o elemento pai existir na solicitação e não for obrigatório/em negrito, mas os campos nele forem, então os campos são obrigatórios. Por exemplo, consulte a estrutura
data.replyMessage
no modelo a seguir. Se a estrutura existir, o título é obrigatório. Caso contrário, o preenchimento dereplyMessage
é opcional.
{ "templateType":"TimePicker", "version":"1.0", "data":{ "replyMessage":{ "title":"Thanks for selecting", "subtitle":"Appointment selected", "imageType":"URL", "imageData":"https://interactive-msg.s3-us-west-2.amazonaws.com/booked.jpg", "imageDescription":"Appointment booked" }, "content":{ "title":"Schedule appointment", "subtitle":"Tap to select option", "imageType":"URL", "imageData":"https://interactive-msg.s3-us-west-2.amazonaws.com/calendar.jpg", "imageDescription":"Appointment booked", "timeZoneOffset":-450, "location":{ "latitude":47.616299, "longitude":-122.4311, "title":"Oscar", "radius":1, }, "timeslots":[ { "date" : "2020-10-31T17:00+00:00", "duration": 60, }, { "date" : "2020-11-15T13:00+00:00", "duration": 60, }, { "date" : "2020-11-15T16:00+00:00", "duration": 60, } ], } } } }
Limites do seletor de horário
A tabela a seguir lista os limites de cada um dos elementos do seletor de horário. Use essas informações se você optar por criar seu próprio Lambda do zero. Os parâmetros obrigatórios estão em negrito.
Campo principal | Campo | Obrigatório | Mínimo de caracteres | Máximo de caracteres | Outros requisitos |
---|---|---|---|---|---|
templateType |
Sim |
Tipo de modelo válido |
|||
data |
Sim |
||||
version |
Sim |
Deve ser “1.0” |
|||
data |
replyMessage | Não | |||
content | Sim | ||||
replyMessage |
title |
Sim | 1 |
400 |
Deve ser uma descrição para modelos imediatos |
subtitle | Não | 0 |
400 |
||
imageType | Não | 0 |
50 |
Deve ser “URL” | |
imageData | Não | 0 |
200 |
Deve ser um URL válido e acessível ao público | |
imageDescription | Não | 0 |
50 |
Não pode existir sem uma imagem | |
content |
title |
Sim | 1 |
400 |
Deve ser uma descrição para modelos imediatos |
subtitle | Não | 0 |
200 |
||
imageType | Não | 0 |
50 |
Deve ser “URL” | |
imageData | Não | 0 |
200 |
Deve ser um URL válido e acessível ao público | |
imageDescription | Não | 0 |
50 |
Não pode existir sem uma imagem | |
timezone offset | Não | -720 |
840 |
Esse é um campo opcional quando não está definido. Nosso cliente de amostra usa como padrão o fuso horário do usuário. Se definido, isso é exibido de acordo com o fuso horário inserido. O campo deve ser um número inteiro representando o número de minutos a partir do GMT, especificando o fuso horário da localização do evento. |
|
local | Não | ||||
timeslots | Sim | 1 |
40 |
Esse é um conjunto de intervalos de tempo. Máximo de 40 elementos na matriz. |
|
local |
longitude | Sim | -180 |
180 |
Deve ser duplo |
latitude | Sim | -90 |
90 |
Deve ser duplo |
|
title | Sim | 1 |
400 |
||
radius |
Não | 0 |
200 |
||
timeslots |
data | Sim |
|
Deve estar no formato de hora ISO-8601: AAAA-MM-DDTHH.MM+00.00 Por exemplo: "2020-08-14T21:21+00.00" |
|
duration | Sim | 1 |
3600 |
Modelo de painel
Ao usar o modelo de painel, você pode apresentar ao cliente até 10 opções em uma pergunta. No entanto, você pode incluir somente uma imagem, em vez de uma imagem em cada opção.
A imagem a seguir mostra um exemplo de como o modelo de painel renderiza informações em um chat. Mostra uma imagem na parte superior da mensagem e, abaixo da imagem, mostra um prompt que pergunta Como posso ajudar? Toque para selecionar a opção. No prompt, três opções são exibidas para o cliente: Verificar as opções de autoatendimento, Falar com um atendente e Encerrar o chat.
O código a seguir é o modelo de painel que você pode usar no Lambda. Observe o seguinte:
-
O texto em negrito é um parâmetro obrigatório.
-
Em alguns casos, se o elemento pai existir na solicitação e não for obrigatório/em negrito, mas os campos nele forem, então os campos são obrigatórios. Por exemplo, consulte a estrutura
data.replyMessage
no modelo a seguir. Se a estrutura existir, o título é obrigatório. Caso contrário, o preenchimento dereplyMessage
é opcional.
{ "templateType":"Panel", "version":"1.0", "data":{ "replyMessage":{ "title":"Thanks for selecting!", "subtitle":"Option selected", }, "content":{ "title":"How can I help you?", "subtitle":"Tap to select option", "imageType":"URL", "imageData":"https://interactive-msg.s3-us-west-2.amazonaws.com/company.jpg", "imageDescription":"Select an option", "elements":[ { "title":"Check self-service options", }, { "title":"Talk to an agent", }, { "title":"End chat", } ] } } }
Limites do painel
A tabela a seguir lista os limites de cada um dos elementos do painel, caso você opte por criar seu próprio Lambda do zero. Os parâmetros obrigatórios estão em negrito.
Para enviar opções ilimitadas, implemente botões de ação em seu aplicativo. Para obter mais informações, consulte Implementação de botões de ação no seletor de listas/painel interativo de mensagens
Campo principal | Campo | Obrigatório | Mínimo de caracteres | Máximo de caracteres | Outros requisitos |
---|---|---|---|---|---|
templateType |
Sim |
Tipo de modelo válido |
|||
data |
Sim |
||||
version |
Sim |
Deve ser “1.0” |
|||
data |
replyMessage | Não | |||
content | Sim | ||||
content |
title | Sim | 1 |
400 |
Deve ser uma descrição para modelos imediatos |
subtitle | Não | 0 |
400 |
||
elements | Sim | 1 item |
10 itens |
Essa é uma matriz de elementos. Máximo de 10 elementos na matriz. |
|
imageType | Não | 0 |
50 |
Deve ser “URL” |
|
imageData | Não | 0 |
200 |
Deve ser um URL válido e acessível ao público |
|
imageDescription | Não | 0 |
50 |
Não pode existir sem uma imagem |
|
referenceId | Não |
|
String. Necessário apenas para o recurso de botão de ação. |
||
listId | Não |
|
String. Necessário apenas para o recurso de botão de ação. |
||
preIndex | Não |
|
Number. Necessário apenas para o recurso de botão de ação. |
||
nextIndex | Não |
|
Number. Necessário apenas para o recurso de botão de ação. |
||
templateIdentifier | Não |
|
Number. Deve ser um UUID. Esse campo será obrigatório se o seletor de listas/painel estiver sendo usado em um carrossel. |
||
elements |
title | Sim | 1 |
400 |
|
actionDetail | Não |
|
|
Necessário apenas para o recurso de botão de ação. Deve ser “PREVIOUS_OPTIONS” ou “SHOW_MORE”. |
|
replyMessage |
title | Sim | 1 |
400 |
|
subtitle | Não | 0 |
400 |
Modelo de resposta rápida
Use mensagens de resposta rápida para obter respostas simples dos clientes e enviá-las para os clientes em uma lista em linha. Você pode apresentar aos clientes até 5 opções em uma mensagem de resposta rápida. Não há suporte para imagens para respostas rápidas.
A imagem a seguir mostra um exemplo de como o modelo de resposta rápida renderiza informações em um chat.
O código a seguir é o modelo de resposta rápida que você pode usar no Lambda.
{ "templateType": "QuickReply", "version": "1.0", "data": { "replyMessage": { "title": "Thanks for selecting!" }, "content": { "title": "Which department would you like?", "elements": [{ "title": "Billing" }, { "title": "Cancellation" }, { "title": "New Service" } ] } } }
Limites de resposta rápida
A tabela a seguir lista os limites de cada um dos elementos da resposta rápida. Use essas informações se você optar por criar seu próprio Lambda do zero. Os parâmetros obrigatórios estão em negrito.
Campo | Obrigatório | Mínimo de caracteres | Máximo de caracteres | Outros requisitos |
---|---|---|---|---|
templateType |
Tipo de modelo válido |
|||
data |
Sim |
|||
version |
Sim |
Deve ser “1.0” |
||
content |
Sim | |||
title | Sim | 1 |
400 |
Deve ser uma descrição para modelos imediatos |
elements | Sim | 2 itens |
10 itens |
Essa é uma matriz de elementos. Mínimo de 2 elementos e máximo de 10 elementos na matriz. |
title | Sim | 1 |
200 |
Modelo de carrossel
Use carrosséis para exibir até 5 seletores de listas ou painéis para os clientes em uma única mensagem. Semelhante ao seletor de listas e ao seletor de horário, você pode adicionar mais opções ao carrossel usando o recurso SHOW_MORE.
O GIF a seguir mostra um exemplo de como o modelo de carrossel renderiza informações em um chat. Os clientes percorrem o carrossel de imagens usando as setas esquerda e direita.
A imagem a seguir mostra dois hiperlinks Saiba mais, que são exemplos de elementos de hiperlink do seletor de carrossel.
O código a seguir é o modelo de carrossel que você pode usar no Lambda.
{ "templateType": "Carousel", "version": "1.0", "data": { "content": { "title": "View our popular destinations", "elements": [ { "templateIdentifier": "template0", "templateType": "Panel", "version": "1.0", "data": { "content": { "title": "California", "subtitle": "Tap to select option", "elements": [ { "title": "Book flights" }, { "title": "Book hotels" }, { "title": "Talk to agent" } ] } } }, { "templateIdentifier": "template1", "templateType": "Panel", "version": "1.0", "data": { "content": { "title": "New York", "subtitle": "Tap to select option", "elements": [ { "title": "Book flights" }, { "title": "Book hotels" }, { "title": "Talk to agent" } ] } } } ] } } }
Para usuários do widget de comunicação hospedado:
-
As seleções no modelo de carrossel resultam em uma resposta de string JSON estruturada como o exemplo a seguir, para ser enviada de volta ao Lambda (outros tipos de mensagens interativas retornam uma resposta de string regular apenas com valor
selectionText
):{ templateIdentifier: "template0", listTitle: "California", selectionText: "Book hotels" }
-
Em carrosséis, você pode fornecer hiperlinks nos elementos do seletor de listas/painel. Para criar um hiperlink em vez de um botão, inclua os seguintes campos adicionais para o elemento que deve ser um hiperlink:
{ title: "Book flights", ... type: "hyperlink", url: "https://www.example.com/Flights" }
Limites de carrossel
A tabela a seguir lista os limites de cada um dos elementos do carrossel. Use essas informações se você optar por criar seu próprio Lambda do zero. Os parâmetros obrigatórios estão em negrito.
Campo principal | Campo | Obrigatório | Mínimo de caracteres | Máximo de caracteres | Outros requisitos |
---|---|---|---|---|---|
templateType |
Sim |
Tipo de modelo válido |
|||
data |
Sim |
||||
version |
Sim |
Deve ser “1.0” |
|||
data |
content | Sim | |||
content |
title | Sim | 1 |
400 |
Deve ser uma descrição para modelos imediatos |
elements | Sim | 2 itens |
5 itens |
Essa é uma matriz de seletores de listas ou modelos de painéis. Somente um tipo de mensagem interativa é aceito por carrossel. Cada elemento deve incluir o campo de nível superior templateIdentifier. Mínimo de 2 modelos e máximo de 5 modelos na matriz. notaPara proporcionar a melhor experiência do cliente, recomendamos que cada modelo tenha o uso consistente de imagens/número de elementos. |
|
omitTitleFromCarouselResponse | Não |
Boolean - Opcionalmente, responda com " |
|||
carouselIsVertical | Não |
Boolean - Opcionalmente, renderize elementos de |
Modelo de formulário da Apple
nota
Esse modelo é aplicável somente para os fluxos de contato do Apple Messages for Business.
Uma empresa pode enviar um formulário de mensagem interativa para os clientes finais por meio de uma única mensagem que contenha várias páginas de entradas solicitadas. Quando a mensagem é recebida no dispositivo Apple de um cliente final, ele pode abrir o formulário e navegar pelas páginas, fornecendo uma resposta para cada página, antes de enviar todas as respostas no final do formulário.
Por exemplo, as empresas podem usar os formulários da Apple para várias finalidades, incluindo fluxos de triagem, pesquisas com clientes e criação/inscrições de contas.
Atenção
O conteúdo da mensagem interativa e as respostas do cliente final são armazenados na transcrição do registro de contato e podem ser visualizados por outros participantes do chat e analistas de contato com acesso às transcrições. Para evitar que as PII apareçam na transcrição do registro de contato, depois do encerramento do contato, você deve usar o bloco Definir comportamento de gravação e análise no guia passo a passo de fluxo de contato, Habilitar o Contact Lens e habilitar a redação de datas confidenciais. Para obter detalhes completos sobre como habilitar a redação de PII, consulte Enable redaction of sensitive data.
Os tipos de páginas compatíveis são:
-
ListPicker: uma lista de opções que o usuário deve selecionar com suporte de imagens.
-
WheelPicker: semelhante ao ListPicker, mas a seleção é feita por meio de uma roda de opções rolável.
-
DatePicker: uma visualização em calendário onde o usuário pode escolher uma data.
-
Input: um campo de texto que o usuário deve preencher.
O código a seguir é um exemplo de um modelo de formulários da Apple que você pode usar no Lambda.
nota
-
O texto em negrito é um parâmetro obrigatório.
-
Em alguns casos, se o elemento pai existir na solicitação e não for obrigatório/em negrito, mas os campos nele forem, então os campos são obrigatórios.
Exemplo de formulário de pesquisa simples:
{ "templateType": "AppleForm", "version": "1.0", "data": { "content": { "title": "Survey", "pages": [ { "pageType": "DatePicker", "title": "Date you visited", "subtitle": "When did you last visit?", "minDate": "2024-01-02" }, { "pageType": "ListPicker", "title": "Rating", "subtitle": "How do you rate the experience?", "items": [ { "title": "Good", "imageType": "URL", "imageData": "https://mybucket.s3.us-west-2.amazonaws.com/good.jpg" }, { "title": "Okay", "imageType": "URL", "imageData": "https://mybucket.s3.us-west-2.amazonaws.com/okay.jpg" }, { "title": "Poor", "imageType": "URL", "imageData": "https://mybucket.s3.us-west-2.amazonaws.com/poor.jpg" } ] }, { "pageType": "ListPicker", "title": "Dine type", "subtitle": "Select all dine types that apply", "multiSelect": true, "items": [ { "title": "Pickup" }, { "title": "Dine-in" }, { "title": "Delivery" } ] }, { "pageType": "WheelPicker", "title": "Visits", "subtitle": "How often do you visit?", "items": [ { "title": "Often" } { "title": "Sometimes" }, { "title": "Rarely" } ] }, { "pageType": "Input", "title": "Additional notes", "subtitle": "Anything else you'd like to mention about your visit?", "multiLine": true } ] } } }
Limites de formulário da Apple
InteractiveMessage
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
versão | string | Sim | Número da versão. Valores permitidos: “1.0” |
templateType | TemplateType | Sim | Tipo de modelo de mensagem interativa. Valores permitidos: [“ListPicker”, “TimePicker”, “Panel”, “QuickReply”, “Carousel”, “ViewResource”, “AppleForm”] |
data | InteractiveMessageData | Sim | Dados das mensagens interativas |
InteractiveMessageData
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
content | InteractiveMessageContent | Sim | Conteúdo principal da mensagem interativa |
replyMessage | ReplyMessage | Não | Configuração de exibição de mensagens após o envio da resposta à mensagem interativa |
AppleFormContent
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
title | String | Sim | Título de nível superior do formulário. Exibido no balão de mensagens de recebimento da Apple e na renderização da transcrição |
subtitle | String | Não | Usado como subtítulo em ReceivedMessage |
imageType | String | Não | Valores válidos: “URL” Usado para imagem em ReceivedMessage |
imageData | String | Não | URL da imagem do S3 usada para imagem em ReceivedMessage |
páginas | AppleFormPage[] | Sim | Lista de páginas do formulário |
showSummary | Booleano | Não | Se deve exibir uma página de resumo das respostas a serem revisadas antes do envio. Padrão: falso (sem confirmação/página de resumo) |
splashPage | AppleFormSplashPage | Não | Página inicial que é exibida antes das páginas reais. Padrão: Sem página inicial |
AppleFormSplashPage
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
title | String | Sim | Título da página inicial |
subtitle | String | Não | Subtítulo/corpo da página inicial |
imageType | ImageType | Não | Presente ao exibir a imagem na página inicial. Valor permitido: “URL”. Padrão: Nenhuma imagem exibida |
imageData | String | Não | Para imageType="URL”, esse é o valor do URL. Padrão: Nenhuma imagem exibida |
buttonTitle | String | Sim | Texto do botão Continuar. Exigido pela Apple, texto padrão com localização não compatível |
AppleFormPage
-
Modelo básico para páginas de formulários. Este é o modelo base para tipos de página específicos
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
pageType | ApplePageType | Sim | Enumeração para o tipo de página. Valores permitidos: [“Input”, “DatePicker”, “WheelPicker”, “ListPicker”] |
title | String | Sim | Título da página |
subtitle | String | Sim | Subtítulo da página. Usado na página de confirmação |
AppleFormDatePickerPage
AppleFormDatePickerPage se estende para AppleFormPage
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
pageType | ApplePageType | Sim | Valor: “DatePicker” |
labelText | String | Não | Texto exibido ao lado da entrada de data. Veja exemplos de capturas de tela no Apêndice |
helperText | String | Não | Texto auxiliar exibido abaixo da entrada de data. Veja exemplos de capturas de tela no Apêndice. Padrão: Sem texto auxiliar |
dateFormat | String | Não | Formato de data ISO 8601. Padrão: aaaa-MM-dd |
startDate | String | Não | Data inicial/padrão selecionada em formato de data válido. Padrão: Data atual para o usuário final quando a mensagem é enviada |
minDate | String | Não | A data mínima que pode ser selecionada em um formato de data válido. Padrão: Sem mínimo |
maxDate | String | Não | A data máxima que pode ser selecionada em um formato de data válido. Padrão: Data atual para o usuário final quando a mensagem é enviada |
AppleFormListPickerPage
AppleFormListPickerPage se estende para AppleFormPage
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
pageType | ApplePageType | Sim | Valor: “ListPicker” |
multiSelect | Booleano | Não | Habilita a seleção de vários itens. Padrão: false (seleção única) |
itens | AppleFormListPickerPageItem[] | Sim | Lista de itens da página de listagem |
AppleFormListPickerPageItem
AppleFormListPickerPageItem se estende para AppleFormPage
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
title | String | Sim | Texto de exibição do item |
imageType | ImageType | Não | Presente ao exibir a imagem dentro do item. Valor permitido: “URL”. Padrão: Nenhuma imagem exibida |
imageData | String | Não | Para imageType="URL”, esse é o valor do URL. Padrão: Nenhuma imagem exibida |
nota
Modelo de imagem semelhante aos modelos de mensagens interativas existentes (ListPicker), exceto que imageDescription
não está incluído, que é usado para texto alternativo de imagem em widgets de chat/chats na web e ignorado para mensagens interativas da Apple.
AppleFormWheelPickerPage
AppleFormWheelPickerPage se estende para AppleFormPage
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
pageType | ApplePageType | Sim | Valor: “WheelPicker” |
itens | AppleFormWheelPickerPageItem[] | Sim | Lista de itens de rodas seletoras |
labelText | String | Não | Texto exibido ao lado da entrada. Veja exemplos de capturas de tela no Apêndice |
AppleFormWheelPickerPageItem
AppleFormWheelPickerPageItem se estende para AppleFormPage
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
title | String | Sim | Texto de exibição do item do seletor |
AppleFormInputPage
AppleFormInputPage se estende para AppleFormPage
Campo | Tipo | Obrigatório | Descrição/observações |
---|---|---|---|
pageType | ApplePageType | Sim | Valor: “Input” |
labelText | String | Não | Texto exibido ao lado da entrada. Veja exemplos de capturas de tela no Apêndice |
helperText | String | Não | Texto adicional exibido na caixa de entrada. Padrão: Sem texto auxiliar |
placeholderText | String | Não | Texto de espaço reservado que é exibido inicialmente quando não há entrada. Padrão: texto de espaço reservado “(Opcional)” ou “(Obrigatório)” |
prefixText | String | Não | Texto prefixo a ser exibido ao lado da entrada. Ex.: “$” quando a entrada é um valor monetário. Padrão: Sem texto prefixo |
obrigatório | Booleano | Não | Se o usuário final é obrigado a fornecer a entrada. Padrão: Falso |
multiLine | Booleano | Não | Se a entrada de várias linhas pode ser fornecida. Padrão: Falso (linha única) |
maxCharCount | Número | Não | A contagem máxima de caracteres da entrada. Aplicado no cliente Apple. Padrão: Sem limite |
regex | String | Não | Cadeia de caracteres de expressão regular (regex) para colocar restrições na entrada fornecida. Padrão: Sem restrições de regex |
keyboardType | String | Não | Determina que tipo de teclado é exibido quando o usuário final está fornecendo a entrada. Valores permitidos: iguais aos da Apple. Consulte os documentos |
textContentType | String | Não | Ajuda com sugestões de preenchimento automático em dispositivos Apple. Valores permitidos: iguais aos da Apple. Consulte os documentos |
Modelo do Apple Pay
nota
Esse modelo é aplicável somente para os fluxos de contato do Apple Messages for Business.
Use o modelo do Apple Pay para fornecer uma maneira fácil e segura para os clientes comprarem bens e serviços por meio do Apple Messages for Business com o Apple Pay.
O seguinte código é o modelo do Apple Pay que você pode usar no Lambda:
nota
-
O texto em negrito é um parâmetro obrigatório.
-
Em alguns casos, se o elemento pai existir na solicitação e não for obrigatório/em negrito, mas os campos nele forem, então os campos são obrigatórios.
{ "templateType":"ApplePay", "version":"1.0", "data":{ "content":{ "title":"Halibut", "subtitle":"$63.99 at Sam's Fish", "imageType":"URL", "imageData":"https://interactive-msg.s3-us-west-2.amazonaws.com/fish.jpg", "payment": { "endpoints": { "orderTrackingUrl": "https://sams.example.com/orderTrackingUrl/", "paymentGatewayUrl": "https://sams.example.com/paymentGateway/", "paymentMethodUpdateUrl": "https://sams.example.com/paymentMethodUpdate/", "shippingContactUpdateUrl": "https://sams.example.com/shippingContactUpdate/", "shippingMethodUpdateUrl": "https://sams.example.com/shippingMethodUpdate/", "fallbackUrl": "https://sams.example.com/paymentGateway/" }, "merchantSession": { "epochTimestamp": 1525730094057, "expiresAt": 1525730094057, "merchantSessionIdentifier": "PSH40080EF4D6.........9NOE9FD", "nonce": "fe72cd0f", "merchantIdentifier": "merchant.com.sams.fish", "displayName": "Sam's Fish", "signature": "308006092a8.......09F0W8EGH00", "initiative": "messaging", "initiativeContext": "https://sams.example.com/paymentGateway/", "signedFields": [ "merchantIdentifier", "merchantSessionIdentifier", "initiative", "initiativeContext", "displayName", "nonce" ], }, "paymentRequest": { "applePay": { "merchantCapabilities": [ "supports3DS", "supportsDebit", "supportsCredit" ], "merchantIdentifier": "merchant.com.sams.fish", "supportedNetworks": [ "amex", "visa", "discover", "masterCard" ] }, "countryCode": "US", "currencyCode": "USD", "lineItems": [ { "amount": "59.00", "label": "Halibut", "type": "final" }, { "amount": "4.99", "label": "Shipping", "type": "final" } ], "requiredBillingContactFields": [ "postalAddress" ], "requiredShippingContactFields": [ "postalAddress", "phone", "email", "name" ], "shippingMethods": [ { "amount": "0.00", "detail": "Available within an hour", "identifier": "in_store_pickup", "label": "In-Store Pickup" }, { "amount": "4.99", "detail": "5-8 Business Days", "identifier": "flat_rate_shipping_id_2", "label": "UPS Ground" }, { "amount": "29.99", "detail": "1-3 Business Days", "identifier": "flat_rate_shipping_id_1", "label": "FedEx Priority Mail" } ], "total": { "amount": "63.99", "label": "Sam's Fish", "type": "final" }, "supportedCountries" : [ "US", "CA", "UK", "JP", "CN" ] } }, "requestIdentifier" : "6b2ca008-1388-4261-a9df-fe04cd1c23a9" } } }
Limites do Apple Pay
Campo principal | Campo | Obrigatório | Mínimo de caracteres | Máximo de caracteres | Outros requisitos |
---|---|---|---|---|---|
templateType | Sim | Tipo de modelo válido | |||
data | Sim | ||||
versão | Sim | Deve ser “1.0” | |||
data | content | Sim | |||
content | title | Sim | 1 | 512 | O título do balão de mensagem recebido |
subtitle | Não | 0 | 512 | O subtítulo a ser exibido abaixo do título do balão de mensagem recebida | |
imageData | Não | 0 | 200 | Deve ser um URL válido e acessível ao público | |
imageType | Não | 0 | 50 | Deve ser “URL” | |
payment | Sim | Um dicionário contendo campos que fornecem os detalhes de uma solicitação do Apple Pay. | |||
requestIdentifier | Não | String, um identificador para a solicitação do ApplePay. Se não for especificado, um UUID será gerado e usado. | |||
payment | endpoints | Sim | Um dicionário contendo os endpoints para processamento de pagamentos, atualizações de contatos e rastreamento de pedidos. | ||
merchantSession | Sim | Um dicionário contendo a sessão de pagamento fornecida pelo Apple Pay após solicitar uma nova sessão de pagamento. | |||
paymentRequest | Sim | Um dicionário com informações sobre a solicitação de pagamento | |||
endpoints | paymentGatewayUrl | Sim | String. Chamado pelo Apple Pay para processar o pagamento por meio do provedor de pagamento. O URL deve corresponder ao URL no campo initiativeContext da sessão do lojista | ||
fallbackUrl | Não | Um URL aberto em um navegador da web para que o cliente possa concluir a compra se o dispositivo não conseguir fazer pagamentos usando o Apple Pay. Se especificado, fallbackUrl precisa corresponder a paymentGatewayUrl. | |||
orderTrackingUrl | Não | Chamado pelo Messages for Business após conclusão do pedido. Oferece a oportunidade de atualizar as informações do pedido em seu sistema. | |||
paymentMethodUpdateUrl | Não | Chamado pelo Apple Pay quando o cliente altera a forma de pagamento. Se você não implementar esse endpoint e incluir essa chave no dicionário, o cliente verá uma mensagem de erro. | |||
shippingContactUpdateUrl | Não | Chamado pelo Apple Pay quando o cliente altera as informações do endereço de entrega. Se você não implementar esse endpoint e incluir essa chave no dicionário, o cliente verá uma mensagem de erro | |||
shippingMethodUpdateUrl | Não | Chamado pelo Apple Pay quando o cliente altera o método de envio. Se você não implementar esse endpoint e incluir essa chave no dicionário, o cliente verá uma mensagem de erro. | |||
merchantSession | Nome de exibição | Sim | 1 | 64 | String. O nome canônico da sua loja, adequado para exibição. Não localize o nome. |
initiative | Sim | String. Deve ser “messaging” | |||
initiativeContext | Sim | String. Passa o URL do gateway de pagamento. | |||
merchantIdentifier | Sim | String. Um identificador exclusivo que representa um lojista do Apple Pay. | |||
merchantSessionIdentifier | Sim | String. Um identificador exclusivo que representa a sessão de um lojista do Apple Pay. | |||
epochTimestamp | Sim | String. A representação de horário em número de segundos decorridos desde 00:00:00 (UTC) de quinta-feira, 1º de janeiro de 1970. | |||
expiresAt | Sim | String. A representação do horário de expiração em número de segundos decorridos desde 00:00:00 (UTC) de quinta-feira, 1º de janeiro de 1970. | |||
nonce | Não | Binário. Uma string de uso único que verifica a integridade da interação. | |||
assinatura | Não | Binário. Um hash da chave pública usada para assinar as interações. | |||
signedFields | Não | Lista de strings que contém as propriedades assinadas. | |||
paymentRequest | applePay | Sim | Um dicionário que descreve a configuração do Apple Pay. | ||
countryCode | Sim | String. O código de país ISO 3166 de duas letras do lojista. | |||
currencyCode | Sim | String. O código monetário ISO 4217 de três letras para o pagamento. | |||
lineItems | Não | Uma matriz de itens de linha explicando pagamentos e cobranças adicionais. Os itens de linha não são obrigatórios. No entanto, a matriz não pode ficar vazia se a chave lineItems estiver presente. | |||
total | Sim | Um dicionário que contém o total. O valor total precisa ser maior que zero para passar na validação. | |||
requiredBillingContactFields | Não | A lista das informações de cobrança do cliente exigidas para processar a transação. Para ver a lista de possíveis strings, consulte requiredBillingContactFields |
|||
requiredShippingContactFields | Não | A lista de informações de envio ou contato do cliente exigidas para concluir ao pedido. Por exemplo, se você precisar do e-mail ou número de telefone do cliente, inclua essa chave. Para ver a lista de possíveis strings, consulte requiredShippingContactFields |
|||
shippingMethods | Não | Uma matriz que lista os métodos de envio disponíveis. A planilha de pagamento do Apple Pay exibe o primeiro método de envio da matriz como o método de envio padrão. | |||
supportedCountries | Não | Uma matriz de países com suporte. Liste cada país com seu código de país ISO 3166. | |||
applePay | merchantIdentifier | Sim | Um identificador exclusivo que representa um lojista do Apple Pay. | ||
merchantCapabilities | Sim | Uma matriz de recursos de pagamento com suporte do lojista. A matriz deve incluir supports3DS e, opcionalmente, pode incluir supportsCredit, supportsDebit e supportsEMV. | |||
supportedNetworks | Sim | Uma matriz de redes de pagamento com suporte do lojista. A matriz deve incluir um ou mais dos seguintes valores: amex, discover, jcb, masterCard, privateLabel ou visa | |||
lineItem | valor | Sim | O valor monetário do item de linha. | ||
rótulo | Sim | Uma descrição breve e localizada do item de linha. | |||
tipo | Não | Um valor que indica se o item de linha é definitivo ou pendente. | |||
total | valor | Sim | O valor total do pagamento. | ||
rótulo | Sim | Uma descrição breve e localizada do pagamento. | |||
tipo | Não | Um valor que indica se o pagamento é definitivo ou pendente. | |||
shippingMethods | valor | Sim | String. O custo não negativo associado a esse método de envio. | ||
detalhe | Sim | String. Descrição adicional do método de envio. | |||
rótulo | Sim | String. Uma breve descrição do método de envio. | |||
Identifier | Sim | String. Um valor definido pelo cliente usado para identificar esse método de envio. |
Modelo do aplicativo iMessage
nota
Esse modelo é aplicável somente para os fluxos de contato do Apple Messages for Business.
Use o modelo de aplicativos iMessage para apresentar ao cliente seu aplicativo iMessage personalizado.
O código a seguir é um exemplo de um modelo de aplicativo iMessage que você pode usar no Lambda.
{ templateType: AppleCustomInteractiveMessage, version: "1.0", data: { content: { appIconUrl: "https://interactive-message-testing.s3-us-west-2.amazonaws.com/apple_4.2kb.jpg", appId: "123456789", appName: "Package Delivery", title: "Bubble Title CIM", bid: "com.apple.messages.MSMessageExtensionBalloonPlugin:{team-id}:{ext-bundle-id}", dataUrl: "?deliveryDate=26-01-2024&destinationName=Home&street=1infiniteloop&state=CA&city=Cupertino&country=USA&postalCode=12345&latitude=37.331686&longitude=-122.030656&isMyLocation=false&isFinalDestination=true", subtitle: "Bubble package", }, replyMessage: { title: "Custom reply message title", subtitle: "Custom reply message subtitle", imageType: "URL", imageData: "https://interactive-msg.s3-us-west-2.amazonaws.com/fruit_34.3kb.jpg", } } }
Limites do aplicativo iMessage
Campo principal | Campo | Obrigatório | Tipo | Outras observações |
---|---|---|---|---|
templateType | Sim | TemplateType | Tipo de modelo válido, “AppleCustomInteractiveMessage” | |
data | Sim | InteractiveMessageData | Contém dicionários de conteúdo e receivedMessage | |
version | Sim | string | Deve ser “1.0” | |
data | content | Sim | InteractiveMessageContent | Conteúdo interativo do aplicativo iMessage |
replyMessage | Sim | ReplyMessage | Configuração de exibição de mensagens após o envio da resposta à mensagem interativa | |
content | appIconUrl | Sim | string | URL do S3 da AWS |
appId | Sim | string | ID do aplicativo iMessage Business | |
appName | Sim | string | Nome do aplicativo iMessage Business | |
bid | Sim | string | Oferta do aplicativo iMessage Business. Padrão: com.apple.messages.MSMessageExtensionBalloonPlugin:{team-id}:{ext-bundle-id} | |
dataUrl | Sim | string | Dados que são passados para o aplicativo iMessage | |
useLiveLayout | Não | boolean | Padrão: Verdadeiro | |
title | Sim | string | título do balão do aplicativo iMessage | |
subtitle | Não | string | subtítulo da bolha do aplicativo iMessage | |
replyMessage | title | Não | string | |
subtitle | Não | string | ||
imageType | Não | string | Deve ser um URL válido e acessível ao público | |
imageData | Não | string | Não pode existir sem uma imagem |
Formatação rich text para títulos e subtítulos
Você pode adicionar formatação avançada a títulos e subtítulos das mensagens de chat. Por exemplo, você pode adicionar links, itálico, negrito, listas numeradas e listas com marcadores. Use markdown
A imagem a seguir de uma caixa de chat mostra um exemplo de seletor de listas com formatação avançada no título e no subtítulo.
-
O título Como podemos ajudar? aws.amazon.com está em negrito e contém um link.
-
O subtítulo contém texto em itálico e negrito, uma lista com marcadores e uma lista numerada. Também mostra um link simples, um link de texto e um código de amostra.
-
A parte inferior da caixa de chat mostra três elementos do seletor de listas.
Como formatar texto com markdown
Você pode escrever strings de título e subtítulo em um formato de várias linhas ou em uma única linha com caracteres de quebra de linha `\r\n`
.
-
Formato de várias linhas: o exemplo de código a seguir mostra como criar listas em markdown em um formato de várias linhas.
const MultiLinePickerSubtitle = `This is some *emphasized text* and some **strongly emphasized text** This is a bulleted list (multiline): * item 1 * item 2 * item 3 This is a numbered list: 1. item 1 2. item 2 3. item 3 Questions? Visit https://plainlink.com/faq [This is a link](https://aws.amazon.com) This is \`
\` ` const PickerTemplate = { templateType: "ListPicker|Panel", version: "1.0", data: { content: { title: "How can we help?", subtitle: MultiLinePickerSubtitle, elements: [ /* ... */ ] } } }
-
Formato de linha única: o exemplo a seguir mostra como criar um subtítulo em uma única linha usando caracteres de quebra de linha
`\r\n`
.const SingleLinePickerSubtitle = "This is some *emphasized text* and some **strongly emphasized text**\r\nThis is a bulleted list:\n* item 1\n* item 2\n* item 3\n\nThis is a numbered list:\n1. item 1\n2. item 2\n3. item 3\n\nQuestions? Visit https://plainlink.com/faq\r\n[This is a link](https://aws.amazon.com)\r\nThis is `<code/>`"; const PickerTemplate = { templateType: "ListPicker|Panel", version: "1.0", data: { content: { title: "How can we help?", subtitle: SingleLinePickerSubtitle, elements: [ /* ... */ ] } } }
O exemplo a seguir mostra como formatar texto em itálico e negrito com markdown:
This is some *emphasized text* and some **strongly emphasized
text**
O exemplo a seguir mostra como formatar texto como código com markdown:
This is `<code />`
Como formatar texto com markdown
Para criar um link, use a sintaxe a seguir:
[aws](https://aws.amazon.com)
Os exemplos a seguir mostram duas maneiras de adicionar links com o markdown:
Questions? Visit https://plainlink.com/faq
[This is a link](https://aws.amazon.com)