Anruf: Entgegennehmen

Namespace: microsoft.graph

Wichtig

Die APIs unter der /beta Version in Microsoft Graph können sich ändern. Die Verwendung dieser APIs in Produktionsanwendungen wird nicht unterstützt. Um festzustellen, ob eine API in v1.0 verfügbar ist, verwenden Sie die Version Selektor.

Aktivieren eines Bots zum Annehmen eines eingehenden Anrufs. Die eingehende Anrufanforderung kann eine Einladung eines Teilnehmers an einem Gruppenanruf oder einem Peer-to-Peer-Anruf sein. Wenn eine Einladung zu einem Gruppenanruf eingeht, enthält die Benachrichtigung die Parameter chatInfo und meetingInfo .

Es wird erwartet, dass der Bot den Anruf beantwortet, ablehnt oder umleitet , bevor der Anruf abläuft. Der aktuelle Timeoutwert beträgt 15 Sekunden. Der aktuelle Timeoutwert beträgt 15 Sekunden für reguläre Szenarien und 5 Sekunden für richtlinienbasierte Aufzeichnungsszenarien.

Diese API unterstützt die folgenden PSTN-Szenarien:

  • Eingehender Anruf an die PSTN-Nummer des Bots und dann Bot lädt ein weiteres PSTN ein.
  • Eingehender Anruf an die PSTN-Nummer des Bots und anschließende Bot-Weiterleitung an ein anderes PSTN.
  • Eingehender Anruf an die PSTN-Nummer des Bots und der Bot leitet dann an einen anderen PSTN um.
  • Eingehender Aufruf an die instance-ID des Bots und dann Bot lädt ein weiteres PSTN ein.
  • Eingehender Aufruf an die instance-ID des Bots und anschließende Bot-Übertragung an ein anderes PSTN.
  • Eingehender Aufruf an die instance-ID des Bots und der Bot leitet dann zu einem anderen PSTN um.
  • Eingehender Anruf an die instance-ID des Bots aus der geplanten Besprechung und dann Bot-Einladungen PSTN.
  • Ausgehender Aufruf von einem Bot (mit instance-ID) an ein PSTN.
  • P2P-Anruf zwischen Bot und einem anderen Peer (Teams-Benutzer, PSTN), Bot lädt einen anderen PSTN ein.
  • P2P-Anruf zwischen Bot und einem anderen Peer (Teams-Benutzer, PSTN), Bot lädt einen anderen Teams-Benutzer ein.
  • Bot: Nehmen Sie an der geplanten Besprechung teil, und laden Sie dann PSTN ein.

Diese API ist in den folgenden nationalen Cloudbereitstellungen verfügbar.

Weltweiter Service US Government L4 US Government L5 (DOD) China, betrieben von 21Vianet

Berechtigungen

Wählen Sie die Berechtigungen aus, die für diese API als am wenigsten privilegiert markiert sind. Verwenden Sie eine höhere Berechtigung oder Berechtigungen nur, wenn Ihre App dies erfordert. Ausführliche Informationen zu delegierten Berechtigungen und Anwendungsberechtigungen finden Sie unter Berechtigungstypen. Weitere Informationen zu diesen Berechtigungen finden Sie in der Berechtigungsreferenz.

Berechtigungstyp Berechtigungen mit den geringsten Berechtigungen Berechtigungen mit höheren Berechtigungen
Delegiert (Geschäfts-, Schul- oder Unikonto) Nicht unterstützt Nicht unterstützt
Delegiert (persönliches Microsoft-Konto) Nicht unterstützt Nicht unterstützt
Application Calls.JoinGroupCall.All Calls.JoinGroupCallAsGuest.All

Hinweis: Für einen Aufruf, der von der Anwendung gehostete Medien verwendet, benötigen Sie auch die Berechtigung Calls.AccessMedia.All. Sie müssen über mindestens eine der folgenden Berechtigungen verfügen, um sicherzustellen, dass die source Benachrichtigung über eingehende Anrufe entschlüsselt wird: Calls.AccessMedia.All, Calls.Initiate.All, Calls.InitiateGroupCall.All, Calls.JoinGroupCall.All, Calls.JoinGroupCallAsGuest.All. Dies source sind die Anruferinformationen in der Benachrichtigung über eingehende Anrufe. Ohne mindestens eine dieser Berechtigungen bleiben sie source verschlüsselt.

HTTP-Anforderung

POST /app/calls/{id}/answer
POST /communications/calls/{id}/answer

Hinweis: Der /app-Pfad ist veraltet. Verwenden Sie in Zukunft den /communications-Pfad.

Anforderungsheader

Name Beschreibung
Authorization Bearer {token}. Erforderlich. Erfahren Sie mehr über Authentifizierung und Autorisierung.
Content-type application/json. Erforderlich.

Anforderungstext

Geben Sie im Anforderungstext ein JSON-Objekt mit den folgenden Parametern an.

Parameter Typ Beschreibung
callbackUri Zeichenfolge Ermöglicht Bots, einen bestimmten Rückruf-URI für den gleichzeitigen Anruf bereitzustellen, um spätere Benachrichtigungen zu erhalten. Wenn diese Eigenschaft nicht festgelegt wurde, wird stattdessen der globale Rückruf-URI des Bots verwendet. Dies muss sein https.
acceptedModalities String collection Die Liste der Modalitäten für die Annahme. Die möglichen Werte sind: audio, video, videoBasedScreenSharing. Erforderlich für das Annehmen eines Anrufs.
callOptions incomingCallOptions Die Anrufoptionen.
mediaConfig appHostedMediaConfig oder serviceHostedMediaConfig Die Medienkonfiguration. Erforderlich.
participantCapacity Int Die Anzahl der Teilnehmer, die die Anwendung für den Anruf verarbeiten kann, für ein richtlinienbasiertes Aufzeichnungsszenario von Teams .

Antwort

Diese Methode gibt einen 202 Accepted Antwortcode zurück.

Beispiele

Das folgende Beispiel illustriert, wie Sie diese API aufrufen können.

Anforderung

Das folgende Beispiel zeigt die Antwort.

POST https://graph.microsoft.com/beta/communications/calls/{id}/answer
Content-Type: application/json
Content-Length: 211

{
  "callbackUri": "callbackUri-value",
  "mediaConfig": {
    "@odata.type": "#microsoft.graph.appHostedMediaConfig",
    "blob": "<Media Session Configuration Blob>"
  },
  "acceptedModalities": [
    "audio"
  ],
  "callOptions": {
    "@odata.type": "#microsoft.graph.incomingCallOptions",
    "isContentSharingNotificationEnabled": true,
    "isDeltaRosterEnabled": true,
    "isInteractiveRosterEnabled": true
  },
  "participantCapacity": 200
}

Antwort

Das folgende Beispiel zeigt die Antwort.

HTTP/1.1 202 Accepted

Beispiel 1: Beantworten eines Peer-to-Peer-VoIP-Anrufs mit vom Dienst gehosteten Medien

Benachrichtigung – eingehend

POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
  "@odata.type": "#microsoft.graph.commsNotifications",
  "value": [
    {
      "@odata.type": "#microsoft.graph.commsNotification",
      "changeType": "created",
      "resourceUrl": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
      "resourceData": {
        "@odata.type": "#microsoft.graph.call",
        "@odata.id": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
        "@odata.etag": "W/\"5445\"",
        "state": "incoming",
        "direction": "incoming",
        "callRoutes": [
          {
            "routingType": "lookup",
            "original": {
              "phone": {
                "id": "+14258828080"
              }
            },
            "final": {
              "user": {
                "id": "29362BD4-CD58-4ED0-A206-0E4A33DBB0B6",
                "displayName": "Heidi Steen"
              }
            }
          }
        ],
        "source": {
          "identity": {
            "user": {
              "displayName": "Test User",
              "id": "8A34A46B-3D17-4ADC-8DCE-DC4E7D572698"
            }
          },
          "region": "westus",
          "languageId": "en-US"
        },
        "targets": [
          {
            "identity": {
              "application": {
                "displayName": "Test BOT",
                "id": "8A34A46B-3D17-4ADC-8DCE-DC4E7D572698"
              }
            },
            "languageId": "en-US"
          }
        ],
        "requestedModalities": [ "audio" ]
      }
    }
  ]
}

Anforderung

POST /communications/calls/57DAB8B1894C409AB240BD8BEAE78896/answer
Content-Type: application/json

{
  "callbackUri": "https://bot.contoso.com/api/calls",
  "acceptedModalities": [ "audio" ],
  "mediaConfig": {
    "@odata.type": "#microsoft.graph.serviceHostedMediaConfig",
    "preFetchMedia": [
      {
        "uri": "https://cdn.contoso.com/beep.wav",
        "resourceId": "1D6DE2D4-CD51-4309-8DAA-70768651088E"
      },
      {
        "uri": "https://cdn.contoso.com/cool.wav",
        "resourceId": "1D6DE2D4-CD51-4309-8DAA-70768651088F"
      }
    ]
  }
}

Antwort

HTTP/1.1 202 Accepted

Benachrichtigung – Einrichtung

POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
  "@odata.type": "#microsoft.graph.commsNotifications",
  "value": [
    {
      "@odata.type": "#microsoft.graph.commsNotification",
      "changeType": "updated",
      "resourceUrl": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
      "resourceData": {
        "@odata.type": "#microsoft.graph.call",
        "@odata.id": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
        "@odata.etag": "W/\"5445\"",
        "state": "establishing"
      }
    }
  ]
}

Hinweis: Anrufaufbau-/eingerichtete Benachrichtigungen können nicht in der richtigen Reihenfolge eintreffen.

Benachrichtigung – eingerichtet

POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
  "@odata.type": "#microsoft.graph.commsNotifications",
  "value": [
    {
      "@odata.type": "#microsoft.graph.commsNotification",
      "changeType": "updated",
      "resourceUrl": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
      "resourceData": {
        "@odata.type": "#microsoft.graph.call",
        "@odata.id": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
        "@odata.etag": "W/\"5445\"",
        "state": "established"
      }
    }
  ]
}

Hinweis: Anrufaufbau-/eingerichtete Benachrichtigungen können nicht in der richtigen Reihenfolge eintreffen.

Beispiel 2: Beantworten eines VOIP-Anrufs mit von der Anwendung gehosteten Medien

Benachrichtigung – eingehend

POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
  "@odata.type": "#microsoft.graph.commsNotifications",
  "value": [
    {
      "@odata.type": "#microsoft.graph.commsNotification",
      "changeType": "created",
      "resourceUrl": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
      "resourceData": {
        "@odata.type": "#microsoft.graph.call",
        "@odata.id": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
        "@odata.etag": "W/\"5445\"",
        "state": "incoming",
        "direction": "incoming",
        "source": {
          "@odata.type": "#microsoft.graph.participantInfo",
          "identity": {
            "user": {
              "displayName": "Test User",
              "id": "8A34A46B-3D17-4ADC-8DCE-DC4E7D572698"
            }
          },
          "region": "westus",
          "languageId": "en-US"
        },
        "targets": [
          {
            "@odata.type": "#microsoft.graph.invitationParticipantInfo",
            "identity": {
              "application": {
                "displayName": "Test BOT",
                "id": "8A34A46B-3D17-4ADC-8DCE-DC4E7D572698"
              }
            },
            "region": "westus",
            "languageId": "en-US"
          }
        ],
        "requestedModalities": [ "audio" ]
      }
    }
  ]
}

Anforderung

POST https://graph.microsoft.com/beta/communications/calls/57DAB8B1894C409AB240BD8BEAE78896/answer
Content-Type: application/json

{
  "callbackUri": "https://bot.contoso.com/api/calls",
  "acceptedModalities": [ "audio" ],
  "mediaConfig": {
    "@odata.type": "#microsoft.graph.appHostedMediaConfig",
    "blob": "<Media Session Configuration Blob>"
  }
}

Antwort

HTTP/1.1 202 Accepted

Benachrichtigung – Einrichtung

POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
  "@odata.type": "#microsoft.graph.commsNotifications",
  "value": [
    {
      "@odata.type": "#microsoft.graph.commsNotification",
      "changeType": "updated",
      "resourceUrl": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
      "resourceData": {
        "@odata.type": "#microsoft.graph.call",
        "@odata.id": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
        "@odata.etag": "W/\"5445\"",
        "state": "establishing"
      }
    }
  ]
}

Hinweis: Anrufaufbau-/eingerichtete Benachrichtigungen können nicht in der richtigen Reihenfolge eintreffen.

Benachrichtigung – eingerichtet

POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
  "@odata.type": "#microsoft.graph.commsNotifications",
  "value": [
    {
      "@odata.type": "#microsoft.graph.commsNotification",
      "changeType": "updated",
      "resourceUrl": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
      "resourceData": {
        "@odata.type": "#microsoft.graph.call",
        "@odata.id": "/communications/calls/57DAB8B1894C409AB240BD8BEAE78896",
        "@odata.etag": "W/\"5445\"",
        "state": "established"
      }
    }
  ]
}

Hinweis: Anrufaufbau-/eingerichtete Benachrichtigungen können nicht in der richtigen Reihenfolge eintreffen.

Benachrichtigung – Inhaltsfreigabe gestartet

POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
  "@odata.type": "#microsoft.graph.commsNotifications",
  "value": [
    {
      "@odata.type": "#microsoft.graph.commsNotification",
      "changeType": "created",
      "resourceUrl": "/communications/calls/421f4c00-4436-4c3a-9d9a-c4924cf98e67/contentsharingsessions/2765eb15-01f8-47c6-b12b-c32111a4a86f"
    }
  ]
}

Benachrichtigung – Inhaltsfreigabe beendet

POST https://bot.contoso.com/api/calls
Content-Type: application/json
{
  "@odata.type": "#microsoft.graph.commsNotifications",
  "value": [
    {
      "@odata.type": "#microsoft.graph.commsNotification",
      "changeType": "deleted",
      "resourceUrl": "/communications/calls/421f4c00-4436-4c3a-9d9a-c4924cf98e67/contentsharingsessions/2765eb15-01f8-47c6-b12b-c32111a4a86f"
    }
  ]
}

Beispiel 3: Annehmen eines richtlinienbasierten Aufzeichnungsanrufs

Im Szenario der richtlinienbasierten Aufzeichnung wird eine Benachrichtigung über eingehende Anrufe an den Bot gesendet, der der Richtlinie zugeordnet ist, bevor ein Teilnehmer unter Richtlinie einem Anruf beitritt. Die Verknüpfungsinformationen finden Sie unter der botData-Eigenschaft . Der Bot kann dann den Anruf annehmen und den Status der Aufzeichnung entsprechend aktualisieren.

Wenn participantCpapacity in der Answer Anforderung für eine richtlinienbasierte Aufzeichnungsbenachrichtigung angegeben ist, wird ein nachfolgendes Teilnehmerbeitrittsereignis, das zur gleichen Richtliniengruppe gehört, als participantJoiningNotification anstelle einer neuen eingehenden Anrufbenachrichtigung gesendet, bis die Anzahl der Teilnehmer, die die aktuelle aufrufende Instance verarbeitet, die in angegeben participantCapacityerreicht hat.

Hier ist ein Beispiel für die Benachrichtigung über eingehende Anrufe, die ein Bot in diesem Fall erhalten würde.

{
   "@odata.type":"#microsoft.graph.commsNotifications",
   "value":[
      {
         "@odata.type":"#microsoft.graph.commsNotification",
         "changeType":"created",
         "resource":"/app/calls/e71f0300-9c1f-4d99-b5f4-2722e877d497",
         "resourceUrl":"/communications/calls/e71f0300-9c1f-4d99-b5f4-2722e877d497",
         "resourceData":{
            "@odata.type":"#microsoft.graph.call",
            "state":"incoming",
            "direction":"incoming",
            "source":{
               "@odata.type":"#microsoft.graph.participantInfo",
               "id":"90fad2ce-8989-41a1-8a66-f6636e629a2a",
               "identity":{
                  "@odata.type":"#microsoft.graph.identitySet",
                  "user":{
                     "@odata.type":"#microsoft.graph.identity",
                     "id":"8A34A46B-3D17-4ADC-8DCE-DC4E7D572698",
                     "identityProvider":"AAD"
                  }
               },
               "endpointType":"default",
               "region":"amer"
            },
            "targets":[
               {
                  "@odata.type":"#microsoft.graph.invitationParticipantInfo",
                  "identity":{
                     "@odata.type":"#microsoft.graph.identitySet",
                     "applicationInstance":{
                        "@odata.type":"#microsoft.graph.identity",
                        "id":"832899f8-2ea1-4604-8413-27bd2892079f",
                        "identityProvider":"AAD"
                     }
                  },
                  "endpointType":"default",
                  "id":"4520a1a5-5394-5a41-aa12-9ee6fa18cfc8",
                  "region":null,
                  "languageId":null
               }
            ],
            "meetingInfo":{
               "@odata.type":"#microsoft.graph.tokenMeetingInfo",
               "token":"join token"
            },
            "tenantId":"932899f8-2ea1-4604-8413-27bd2892079f",
            "myParticipantId":"1520a1a5-5394-4a41-aa72-9ee6fa18cfc8",
            "callChainId":"05f2f70f-3a9c-47c1-80a9-cc79e91d8cec",
            "incomingContext":{
               "@odata.type":"#microsoft.graph.incomingContext",
               "sourceParticipantId":"30fad2ce-8989-41a1-8a66-f6636e629a2a",
               "observedParticipantId":"30fad2ce-8989-41a1-8a66-f6636e629a2a"
            },
            "id":"e71f0300-9c1f-4d99-b5f4-2722e877d497",
            "applicationMetadata":{
               "botData":{
                  "mediaHostedRegion":"USEA",
                  "user":{
                     "participationMethod":"callee",
                     "clientLocation":"US"
                  },
                  "otherSideUser":{
                     "id":"971f0300-9c1f-4d99-b5f4-2722e877d490",
                     "participantId":"3520a1a5-5394-4a41-aa72-9ee6fa18cfc8",
                     "tenantId":"1540a1a5-2394-4a41-aa72-9ee6fa18cfc8",
                     "onBehalfOf":{
                        "id":"871f0300-9c1f-4d99-b5f4-2722e877d490"
                     },
                     "participationMethod":"caller",
                     "clientLocation":"EUNO"
                  },
                  "inviteReasons":[
                     "PolicyBasedRecording"
                  ],
                  "policyIdentifier":"Test Policy",
                  "pairedRecorders":[
                     {
                        "id":"471f0300-5c1f-4d99-b5f4-2722e877d490",
                        "participantId":"371f0300-2c1f-4d99-b5f4-2722e877d490"
                     }
                  ],
                  "otherRecorders":[
                     {
                        "id":"671f0300-9c1f-4d99-b5f4-2722e877d490",
                        "participantId":"a71f0300-ec1f-4d99-b5f4-2722e877d490"
                     }
                  ]
               }
            }
         }
      }
   ]
}