Delen via


Uitgebreide kaartbijlagen toevoegen aan berichten met de Bot Connector-API

Met sommige kanalen kan uw bot uitgebreide kaarten verzenden naar gebruikers. Een uitgebreide kaart is een bijlage die interactieve elementen bevat, zoals knoppen, tekst, afbeeldingen, audio, video, enzovoort.

In dit artikel wordt beschreven hoe u uitgebreide kaarten maakt die u aan een bericht kunt toevoegen. Zie hoe u mediabijlagen toevoegt aan berichten voor specifieke instructies over het toevoegen van een bijlage aan een bericht.

Typen uitgebreide kaarten

Een uitgebreide kaart bestaat uit een titel, beschrijving, koppeling en afbeeldingen. Een bericht kan meerdere uitgebreide kaarten bevatten, weergegeven in lijstindeling of carrouselindeling. Het Bot Framework ondersteunt momenteel acht typen uitgebreide kaarten:

Kaarttype Beschrijving
AdaptiveCard Een aanpasbare kaart die elke combinatie van tekst, spraak, afbeeldingen, knoppen en invoervelden kan bevatten. Zie ondersteuning per kanaal.
Animatiecard Een kaart die GIF-animaties of korte video's kan afspelen.
AudioCard Een kaart die een audiobestand kan afspelen.
HeroCard Een kaart die doorgaans één grote afbeelding, een of meer knoppen en tekst bevat.
ThumbnailCard Een kaart die doorgaans één miniatuurafbeelding, een of meer knoppen en tekst bevat.
ReceiptCard Een kaart waarmee een bot een ontvangstbewijs kan verstrekken aan de gebruiker. Het bevat meestal de lijst met items die moeten worden opgenomen op de ontvangst, belasting en totale informatie en andere tekst.
SignInCard Een kaart waarmee een bot kan aanvragen dat een gebruiker zich aanmeldt. Het bevat meestal tekst en een of meer knoppen waarop de gebruiker kan klikken om het aanmeldingsproces te initiëren.
VideoCard Een kaart die video's kan afspelen.

Tip

Zie het naslagartikel over kanalen voor informatie over welke functies voor elk kanaal worden ondersteund.

Gebeurtenissen binnen uitgebreide kaarten verwerken

Als u gebeurtenissen binnen uitgebreide kaarten wilt verwerken, gebruikt u CardAction-objecten om op te geven wat er moet gebeuren wanneer de gebruiker op een knop klikt of op een sectie van de kaart tikt. Elk CardAction object bevat deze eigenschappen:

Eigenschap Type Description
channelData tekenreeks kanaalspecifieke gegevens die aan deze actie zijn gekoppeld
displayText tekenreeks testen om weer te geven in de chatfeed als op de knop wordt geklikt
sms verzenden tekenreeks tekst voor de actie
type tekenreeks type actie (een van de waarden die zijn opgegeven in de onderstaande tabel)
title tekenreeks titel van de knop
image tekenreeks afbeeldings-URL voor de knop
waarde tekenreeks waarde die nodig is om het opgegeven type actie uit te voeren

Notitie

Knoppen in adaptieve kaarten worden niet gemaakt met behulp van CardAction objecten, maar in plaats daarvan met behulp van het schema dat is gedefinieerd door adaptieve kaarten. Zie Een adaptieve kaart toevoegen aan een bericht voor een voorbeeld waarin wordt getoond hoe u knoppen toevoegt aan een adaptieve kaart.

Als u correct wilt functioneren, wijst u een actietype toe aan elk klikbaar item op een hero-kaart. In deze tabel worden de beschikbare actietypen vermeld en beschreven en wat er moet staan in de bijbehorende waardeeigenschap.

De messageBack kaartactie heeft een meer gegeneraliseerde betekenis dan de andere kaartacties. Zie de sectie Kaartactie van het activiteitenschema voor meer informatie over de messageBack en andere kaartactietypen.

Type Description Waarde
call Start een telefoongesprek. Bestemming voor het telefoongesprek in deze indeling: tel:123123123123.
downloadFile Hiermee downloadt u een bestand. De URL van het bestand dat u wilt downloaden.
imBack Verzendt een bericht naar de bot en plaatst een zichtbaar antwoord in de chat. Tekst van het bericht dat moet worden verzonden.
messageBack Vertegenwoordigt een tekstantwoord dat moet worden verzonden via het chatsysteem. Een optionele programmatische waarde die moet worden opgenomen in gegenereerde berichten.
openUrl Hiermee opent u een URL in de ingebouwde browser. De URL die moet worden geopend.
playAudio Speelt audio af. De URL van de audio die moet worden afgespeeld.
playVideo Hiermee wordt een video afgespeeld. De URL van de video die moet worden afgespeeld.
postBack Verzendt een bericht naar de bot en plaatst mogelijk geen zichtbaar antwoord in de chat. Tekst van het bericht dat moet worden verzonden.
showImage Geeft een afbeelding weer. De URL van de afbeelding die moet worden weergegeven.
aanmelden Hiermee wordt een OAuth-aanmeldingsproces gestart. De URL van de OAuth-stroom die moet worden gestart.

Een Hero-kaart toevoegen aan een bericht

Een uitgebreide kaartbijlage toevoegen aan een bericht:

  1. Maak een object dat het type kaart aangeeft dat u aan het bericht wilt toevoegen.
  2. Een bijlageobject maken:
    • contentType Stel de eigenschap ervan in op het mediatype van de kaart.
    • Stel de content eigenschap ervan in op het object dat u hebt gemaakt om de kaart weer te geven.
  3. Voeg het Attachment object toe aan de attachments matrix van het bericht.

Tip

Berichten met uitgebreide kaartbijlagen worden meestal niet opgegeven text.

Met sommige kanalen kunt u meerdere uitgebreide kaarten toevoegen aan de attachments matrix binnen een bericht. Deze mogelijkheid kan handig zijn in scenario's waarin u de gebruiker meerdere opties wilt bieden. Als uw bot bijvoorbeeld gebruikers in staat stelt hotelkamers te boeken, kan deze de gebruiker een lijst met uitgebreide kaarten presenteren waarin de typen beschikbare ruimten worden weergegeven. Elke kaart kan een afbeelding en lijst met voorzieningen bevatten die overeenkomen met het type kamer en de gebruiker kan een kamertype selecteren door op een kaart te tikken of op een knop te klikken.

Tip

Als u meerdere rich cards in lijstindeling wilt weergeven, stelt u de eigenschap van attachmentLayout het activiteitsobject in op 'list'. Als u meerdere rijke kaarten in carrouselindeling wilt weergeven, stelt u de eigenschap van attachmentLayout het Activity object in op 'carrousel'. Als het kanaal geen carrouselindeling ondersteunt, worden de uitgebreide kaarten weergegeven in lijstindeling, zelfs als de attachmentLayout eigenschap carrousel aangeeft.

In het volgende voorbeeld ziet u een volledig bericht met één Hero-kaartbijlage. In deze voorbeeldaanvraag https://smba.trafficmanager.net/teams vertegenwoordigt u de basis-URI. De basis-URI voor aanvragen die uw botproblemen kunnen afwijken. Zie API-naslaginformatie voor meer informatie over het instellen van de basis-URI.

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"
    },
    "attachments": [
        {
            "contentType": "application/vnd.microsoft.card.hero",
            "content": {
                "title": "title goes here",
                "subtitle": "subtitle goes here",
                "text": "descriptive text goes here",
                "images": [
                    {
                        "url": "https://www.publicdomainpictures.net/pictures/30000/t2/duck-on-a-rock.jpg",
                        "alt": "picture of a duck",
                        "tap": {
                            "type": "playAudio",
                            "value": "url to an audio track of a duck call goes here"
                        }
                    }
                ],
                "buttons": [
                    {
                        "type": "playAudio",
                        "title": "Duck Call",
                        "value": "url to an audio track of a duck call goes here"
                    },
                    {
                        "type": "openUrl",
                        "title": "Watch Video",
                        "image": "https://www.publicdomainpictures.net/pictures/30000/t2/duck-on-a-rock.jpg",
                        "value": "url goes here of the duck in flight"
                    }
                ]
            }
        }
    ],
    "replyToId": "5d5cdc723"
}

Een adaptieve kaart toevoegen aan een bericht

De adaptieve kaart kan elke combinatie van tekst, spraak, afbeeldingen, knoppen en invoervelden bevatten. Adaptieve kaarten worden gemaakt met behulp van de JSON-indeling die is opgegeven in adaptieve kaarten, waardoor u volledige controle hebt over kaartinhoud en -indeling.

Maak gebruik van de informatie op de site adaptieve kaarten om het adaptieve kaartschema te begrijpen, adaptieve kaartelementen te verkennen en JSON-voorbeelden te bekijken die kunnen worden gebruikt om kaarten met verschillende samenstelling en complexiteit te maken. Daarnaast kunt u interactive visualizer gebruiken om nettoladingen van adaptieve kaarten te ontwerpen en voorbeeld van kaartuitvoer te bekijken.

In het volgende voorbeeld ziet u één adaptief kaartbijlageobject, dat een werktoewijzing vertegenwoordigt. Als u dit naar een gebruiker wilt verzenden, moet u deze toevoegen als bijlage in een bericht.

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.0",
  "body": [
    {
      "type": "Container",
      "items": [
        {
          "type": "TextBlock",
          "text": "Publish Adaptive Card schema",
          "weight": "bolder",
          "size": "medium"
        },
        {
          "type": "ColumnSet",
          "columns": [
            {
              "type": "Column",
              "width": "auto",
              "items": [
                {
                  "type": "Image",
                  "url": "https://pbs.twimg.com/profile_images/3647943215/d7f12830b3c17a5a9e4afcc370e3a37e_400x400.jpeg",
                  "size": "small",
                  "style": "person"
                }
              ]
            },
            {
              "type": "Column",
              "width": "stretch",
              "items": [
                {
                  "type": "TextBlock",
                  "text": "Matt Hidinger",
                  "weight": "bolder",
                  "wrap": true
                },
                {
                  "type": "TextBlock",
                  "spacing": "none",
                  "text": "Created {{DATE(2017-02-14T06:08:39Z, SHORT)}}",
                  "isSubtle": true,
                  "wrap": true
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "Container",
      "items": [
        {
          "type": "TextBlock",
          "text": "Now that we have defined the main rules and features of the format, we need to produce a schema and publish it to GitHub. The schema will be the starting point of our reference documentation.",
          "wrap": true
        },
        {
          "type": "FactSet",
          "facts": [
            {
              "title": "Board:",
              "value": "Adaptive Card"
            },
            {
              "title": "List:",
              "value": "Backlog"
            },
            {
              "title": "Assigned to:",
              "value": "Matt Hidinger"
            },
            {
              "title": "Due date:",
              "value": "Not set"
            }
          ]
        }
      ]
    }
  ],
  "actions": [
    {
      "type": "Action.ShowCard",
      "title": "Comment",
      "card": {
        "type": "AdaptiveCard",
        "body": [
          {
            "type": "Input.Text",
            "id": "comment",
            "isMultiline": true,
            "placeholder": "Enter your comment"
          }
        ],
        "actions": [
          {
            "type": "Action.Submit",
            "title": "OK"
          }
        ]
      }
    },
    {
      "type": "Action.OpenUrl",
      "title": "View",
      "url": "https://adaptivecards.io"
    }
  ]
}

De resulterende kaart bevat een titel, informatie over wie de kaart heeft gemaakt (hun naam en avatar), toen de kaart werd gemaakt, een beschrijving van de werktoewijzingen en informatie met betrekking tot de opdracht. Er zijn ook knoppen waarop kan worden geklikt om opmerkingen te maken bij de werktoewijzing of om deze weer te geven:

Voorbeeld van agendaherinnering als adaptieve kaart.

Aanvullende bronnen