Compartilhar via


Adicionar anexos de mídia a mensagens com a API do Bot Connector

Bots e canais normalmente trocam cadeias de caracteres de texto, mas alguns canais também oferecem suporte a troca de anexos, o que permite que seu bot envie mensagens mais ricas para os usuários. Por exemplo, seu bot pode enviar anexos de mídia (como imagens, vídeos, áudio, arquivos) e cartões avançados. Este artigo descreve como adicionar anexos de mídia às mensagens usando o serviço Conector de Bot.

Dica

Para obter informações sobre quais recursos têm suporte em cada canal, consulte o artigo de referência de canais .

Adicionar um anexo de mídia

Para adicionar um anexo de mídia a uma mensagem, crie um objeto Attachment , defina a name propriedade , defina a contentUrl propriedade como a URL do arquivo de mídia e defina a contentType propriedade como o tipo de mídia apropriado (como image/jpg, audio/wav, video/mp4). Em seguida, dentro do objeto Atividade que representa sua mensagem, especifique seu objeto Attachment dentro da matriz attachments.

O exemplo a seguir mostra uma solicitação que envia uma mensagem contendo o texto e um anexo de imagem única. Nessa solicitação de exemplo, https://smba.trafficmanager.net/teams representa o URI base; o URI base das solicitações emitidas pelo bot pode ser diferente. Para obter detalhes sobre como definir o URI base, confira Referência de API.

POST https://smba.trafficmanager.net/teams/v3/conversations/abcd1234/activities/5d5cdc723
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "sender's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "recipient's name"
    },
    "text": "Here's a picture of the duck I was telling you about.",
    "attachments": [
        {
            "contentType": "image/jpg",
            "contentUrl": "https://www.publicdomainpictures.net/pictures/30000/t2/duck-on-a-rock.jpg",
            "name": "duck-on-a-rock.jpg"
        }
    ],
    "replyToId": "5d5cdc723"
}

Para canais que dão suporte a binários embutidos de uma imagem, você pode definir a contentUrl propriedade do Attachment como um binário base64 da imagem (por exemplo, data:image/jpg; base64,iVBORw0KGgo...). O canal exibirá a imagem ou a URL da imagem ao lado da cadeia de texto da mensagem.

{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "sender's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "recipient's name"
    },
    "text": "Here's a picture of the duck I was telling you about.",
    "attachments": [
        {
            "contentType": "image/jpg",
            "contentUrl": "data:image/jpg;base64,iVBORw0KGgo...",
            "name": "duck-on-a-rock.jpg"
        }
    ],
    "replyToId": "5d5cdc723"
}

Você pode anexar um arquivo de vídeo ou áudio a uma mensagem usando o mesmo processo descrito acima para um arquivo de imagem. Dependendo do canal, áudio e vídeo podem ser reproduzidos em linha ou ele exibidos como um link.

Observação

O bot também pode receber mensagens que contenham anexos de mídia. Por exemplo, uma mensagem recebida por seu bot pode conter um anexo, se o canal permitir que o usuário carregue uma foto para análise ou documento para armazenamento.

Adicionar um anexo de AudioCard

A adição de um anexo de AudioCard ou VideoCard é o mesmo que adicionar um anexo de mídia. Por exemplo, o JSON a seguir mostra como adicionar uma cartão de áudio ao anexo de mídia.

{
    "type": "message",
    "from": {
        "id": "12345678",
        "name": "sender's name"
    },
    "conversation": {
        "id": "abcd1234",
        "name": "conversation's name"
   },
   "recipient": {
        "id": "1234abcd",
        "name": "recipient's name"
    },
    "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.audio",
      "content": {
        "title": "Allegro in C Major",
        "subtitle": "Allegro Duet",
        "text": "No Image, No Buttons, Autoloop, Autostart, Sharable",
        "duration": "PT2M55S",
        "media": [
          {
            "url": "https://contoso.com/media/AllegrofromDuetinCMajor.mp3"
          }
        ],
        "shareable": true,
        "autoloop": true,
        "autostart": true,
        "value": {
            // Supplementary parameter for this card
        }
      }
    }],
    "replyToId": "5d5cdc723"
}

Assim que o canal receber esse anexo, ele iniciará a execução do arquivo de áudio. Se um usuário interagir com o áudio selecionando Pausar, por exemplo, o canal enviará um retorno de chamada para o bot com um JSON semelhante a este:

{
    ...
    "type": "event",
    "name": "media/pause",
    "value": {
        "url": // URL for media
        "cardValue": {
            // Supplementary parameter for this card
        }
    }
}

O nome do evento de mídia media/pause aparecerá no campo activity.name. Consulte a tabela abaixo para obter uma lista com todos os nomes de evento de mídia.

Evento Descrição
media/next O cliente pulou para a próxima mídia
media/pause O cliente pausou a reprodução da mídia
media/play O cliente começou a reprodução da mídia
media/previous O cliente pulou para a mídia anterior
media/resume O cliente retomou a reprodução da mídia
media/stop O cliente interrompeu a reprodução da mídia

Recursos adicionais