Adicionar anexos de multimédia a mensagens com a API do Bot Connector

Normalmente, os bots e canais trocam cadeias de texto, mas alguns canais também suportam a troca de anexos, o que permite que o bot envie mensagens mais ricas aos utilizadores. Por exemplo, o bot pode enviar anexos multimédia (como imagens, vídeos, áudio, ficheiros) e cartões avançados. Este artigo descreve como adicionar anexos de multimédia a mensagens com o serviço Bot Connector.

Dica

Para obter informações sobre que funcionalidades são suportadas em cada canal, consulte o artigo de referência de canais .

Adicionar um anexo de multimédia

Para adicionar um anexo multimédia a uma mensagem, crie um objeto Anexo , defina a name propriedade, defina a contentUrl propriedade para o URL do ficheiro de multimédia e defina a contentType propriedade para o tipo de suporte de dados adequado (como imagem/jpg, áudio/wav, vídeo/mp4). Em seguida, no objeto Atividade que representa a sua mensagem, especifique o objeto Attachment dentro da attachments matriz.

O exemplo seguinte mostra um pedido que envia uma mensagem com texto e um único anexo de imagem. Neste pedido de exemplo, https://smba.trafficmanager.net/teams representa o URI base; o URI base para pedidos de que os problemas do bot podem ser diferentes. Para obter detalhes sobre como definir o URI base, veja Referência da 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 suportam binários inline de uma imagem, pode definir a contentUrl propriedade do Attachment para um binário base64 da imagem (por exemplo, data:image/jpg; base64,iVBORw0KGgo...). O canal apresentará a imagem ou o URL da imagem junto à 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"
}

Pode anexar um ficheiro de vídeo ou ficheiro de áudio a uma mensagem através do mesmo processo descrito acima para um ficheiro de imagem. Dependendo do canal, o vídeo e o áudio podem ser reproduzidos inline ou podem ser apresentados como uma ligação.

Nota

O bot também pode receber mensagens que contêm anexos de multimédia. Por exemplo, uma mensagem que o bot recebe pode conter um anexo se o canal permitir que o utilizador carregue uma fotografia para ser analisada ou um documento a ser armazenado.

Adicionar um anexo AudioCard

Adicionar um anexo AudioCard ou VideoCard é o mesmo que adicionar um anexo de multimédia. Por exemplo, o seguinte JSON mostra como adicionar um cartão de áudio no anexo de multimé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 este anexo, começará a reproduzir o ficheiro de áudio. Se um utilizador interagir com áudio ao selecionar Colocar em Pausa, por exemplo, o canal enviará uma chamada de retorno para o bot com um JSON semelhante ao seguinte:

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

O nome do evento multimédia media media/pausa aparecerá no activity.name campo. Veja a tabela abaixo para obter uma lista de todos os nomes de eventos multimédia.

Evento Description
multimédia/seguinte O cliente foi ignorado para o suporte de dados seguinte
multimédia/pausa O cliente fez uma pausa no suporte de dados de reprodução
multimédia/reprodução O cliente começou a reproduzir multimédia
multimédia/anterior O cliente foi ignorado para o suporte de dados anterior
multimédia/currículo O cliente retomou a reprodução de multimédia
multimédia/paragem O cliente deixou de reproduzir multimédia

Recursos adicionais