Webhooks

Übersicht

Whitelabel Instanzen können so konfiguriert werden, dass Sie von Drittservices implementierte Webhooks aufrufen, sobald ein gewisses Ereignis geschieht. Zum Beispiel kann ein Drittservice jedes mal darüber informiert werden, wenn eine neue Sitzung im System geplant wurde. Webhooks können unter "Webhooks" in den Systemeinstellungen konfiguriert werden.

Das System implementiert die folgenden Webhooks:

  • onMeetingScheduled: Wird aufgerufen, sobald eine Sitzung geplant wurde
  • onMeetingUpdated: Wird aufgerufen, sobald eine Sitzung aktualisiert wurde
  • onMeetingClosed: Wird aufgerufen, sobald eine Sitzung geschlossen wurde
  • onMeetingDeleted: Wird aufgerufen, sobald eine Sitzung gelöscht wurde
  • onMeetingSummaryCreated: Wird aufgerufen, sobald eine Sitzungszusammefassung erstellt wurde.
  • onMeetingRecordingCreated: Wird aufgerufen, sobald eine Sitzungsaufzeichnung verfügbar ist.
  • onMeetingJoined: Wird aufgerufen, sobald eine Person den Sitzungsraum betritt.
  • onMeetingLeft: Wird aufgerufen, sobald eine Person den Sitzungsraum verlässt.

HTTP Methoden

Der Webhook Service kann entweder auf HTTP POST oder HTTP PUT Aufrufe hören. Jeder Webhook kann individuell konfiguriert werden.

API Schlüssel Schutz

Jeder Webhook kann mit einem individuelle API Schlüssel konfiguriert werden, welcher bei jedem Webhook Aufruf als X-API-KEY im HTTP Header mitgesendet wird.

Daten

Die Webhooks onMeetingScheduled, onMeetingUpdated und onMeetingClosed werden mit einem Sitzungsobjekt als JSON aufgerufen:

{
  "invitedParticipants": [],
  "meetingId": "9974-7653-8886-0485",
  "id": "5e945c36b863b82cefdddf54",
  "topic": "My Meeting Topic",
  "startTime": "2022-04-07T09:00:00.000Z",
  "endTime": "2022-04-07T10:00:00.000Z",
  "duration": "60",
  "type": "standard",
  "roomId": "5e9459c5b863b82cefdddf50",
  "isRecurring": false,
  "isDialin": false,
  "recurring": {
    "frequencyType": "",
    "frequency": null,
    "monthlyPattern": "",
    "endsType": "",
    "endsOn": "2022-04-13T12:18:07.211Z",
    "endsAfter": 0
  },
  "isRecorded": false,
  "agenda": "",
  "documents": [],
  "meetingPermissionId": null,
  "videoResolution": "standard",
  "dtClosedAt": null,
  "whitelabelId": "5c737902b377b0f7fbf81fce",
  "addedByUserId": "5e9459c5b863b82cefdddf4e",
  "addedByUserEmail": "test-user@example.com",
  "accountId": "5e9459c5b863b82cefdddf4f",
  "addedByUserName": "Test User",
  "timezone": "Europe/Zurich",
  "privateDataVisible": true,
  "icalSequence": "0",
  "icsToken": "c89f842f-3295-4bf9-807d-a46841fbc2ec-25f722e4-70fc-4163-9cda-b4b7d8aec358",
  "isActive": false,
  "isClosed": true,
  "isOpen": false,
  "dialInConferenceRoom": null,
  "dialInNumbers": [],
  "dialInPin": null,
  "sipProxy": null,
  "sipDomain": null,
  "isDemo": false,
  "isPromo": false
}

Der Webhook onMeetingDeleted wird mit einem Array von Meeting Objekten aufgerufen (es kann sein, dass mehrere Sitzungen gleichzeitig gelöscht wurden).

[ 
  {
    "invitedParticipants": [],
    "meetingId": "9974-7653-8886-0485",
    "id": "5e945c36b863b82cefdddf54",
    "topic": "My Meeting Topic",
    "startTime": "2022-04-07T09:00:00.000Z",
    "endTime": "2022-04-07T10:00:00.000Z",
    "duration": "60",
    "type": "standard",
    "roomId": "5e9459c5b863b82cefdddf50",
    "isRecurring": false,
    "isDialin": false,
    "recurring": {
      "frequencyType": "",
      "frequency": null,
      "monthlyPattern": "",
      "endsType": "",
      "endsOn": "2022-04-13T12:18:07.211Z",
      "endsAfter": 0
    },
    "isRecorded": false,
    "agenda": "",
    "documents": [],
    "meetingPermissionId": null,
    "videoResolution": "standard",
    "dtClosedAt": null,
    "whitelabelId": "5c737902b377b0f7fbf81fce",
    "addedByUserId": "5e9459c5b863b82cefdddf4e",
    "addedByUserEmail": "test-user@example.com",
    "accountId": "5e9459c5b863b82cefdddf4f",
    "addedByUserName": "Test User",
    "timezone": "Europe/Zurich",
    "privateDataVisible": true,
    "icalSequence": "0",
    "icsToken": "c89f842f-3295-4bf9-807d-a46841fbc2ec-25f722e4-70fc-4163-9cda-b4b7d8aec358",
    "isActive": false,
    "isClosed": true,
    "isOpen": false,
    "dialInConferenceRoom": null,
    "dialInNumbers": [],
    "dialInPin": null,
    "sipProxy": null,
    "sipDomain": null,
    "isDemo": false,
    "isPromo": false
  }
]

Der Webhook onMeetingSummaryCreated wird mit einem MeetingSummary Objekt im JSON Format aufgerufen:

{
  "responseCode": 0,
  "data": {
    "id": "5f7d49eb62e8f9a43b23f986",
    "meetingId": "5f7d49e662e8f9a43b23f983",
    "meetingType": "boardroom",
    "agenda": "",
    "minutes": "",
    "participants": [
      {
        "name": "Participant 1",
        "durations": [
          {
            "action": "joined",
            "timestamp": 1602046445811
          },
          {
            "action": "left",
            "timestamp": 1602046670808
          },
          {
            "action": "joined",
            "timestamp": 1602047908378
          },
          {
            "action": "left",
            "timestamp": 1602048304208
          }
        ],
        "info": {
          "browserVersion": "82.0.4062.0",
          "browserName": "Chrome",
          "osName": "macOS",
          "osVersion": "10.15.6",
          "platformType": "desktop",
          "platformVendor": "Apple"
        }
      },
      {
        "name": "Participant 2",
        "durations": [
          {
            "action": "joined",
            "timestamp": 1602046456329
          },
          {
            "action": "left",
            "timestamp": 1602046669443
          }
        ],
        "info": {
          "browserVersion": "82.0.4062.0",
          "browserName": "Chrome",
          "osName": "macOS",
          "osVersion": "10.15.6",
          "platformType": "desktop",
          "platformVendor": "Apple"
        }
      }
    ],
    "documents": [],
    "pdf": null,
    "dayTimestamp": 1602021600000,
    "accountId": "5c73790ab377b0f7fbf81fde",
    "isNamedRoom": false,
    "isRecordingPrepared": false,
    "sfuHostname": "ch-01-sfu-02.wlvmr.net",
    "meetingQuestions": [],
    "meetingConversationDuration": 25,
    "meetingConversationStartToEndDuration": 25,
    "meetingParticipantsStartToEndDuration": 35,
    "meetingStartToEndDuration": 60,
  }
}

Die Parameter meetingConversationDuration, meetingConversationStartToEndDuration, meetingParticipantsStartToEndDuration und meetingStartToEndDuration sind wie folgt definiert:

Parameter NameParameter TypBeschreibung
meetingConversationDurationZahlDauer während welcher mindestens zwei Personen gleichzeitig im Raum waren, in Sekunden
meetingConversationStartToEndDurationZahlDauer vom Zeitpunkt, als zum ersten Mal zwei Teilnehmer gleichzeitig im Raum waren bis zum Zeitpunkt, als zum letzten Mal zwei Teilnehmer gleichzeitig im Raum waren, in Sekunden
meetingParticipantsStartToEndDurationZahlDuration vom Zeitpunkt, als die erste Person den Raum betrat bis zum Zeitpunkt, als die letzte Person den Raum verlassen hat, in Sekunden
meetingStartToEndDurationZahlDie gesamte, geplante Zeit der Sitzung, inklusive allfälliger Verlängerungen

Der Webhook onMeetingRecordingCreated wird mit einem MeetingRecordingPrepared Objekt im JSON Format aufgerufen:

{
  "meetingId": "5e945c36b863b82cefdddf54",
  "meetingSummaryId": "5f48a701ee0c388a879bffa7",
  "meetingToken": "f7140700-310e-46b8-9813-be0cb0e6b59c",
  "mergedRecordingUrl": "https://..../<merged-file>.webm",
  "recordingUrls": [
    "video-file-1.webm",
    "video-file-2.webm",
    "video-file-3.webm"
  ]
}

Die Webhooks onMeetingJoined und onMeetingLeft werden mit einem MeetingParticipantsStatus Objekt im JSON Format aufgerufen:

{
  "meetingId":  "5df78199c015b37195230596",
  "meetingToken":  "0000-0000-0000-0000",
  "participant":  {
    "participantName": "Joe Doe",
    "participantEmail": "joe@example.com",
    "participantMeetingUUID": "4edaf0d2-cb6c-42f1-a266-4ae7d971f2e6",
    "isModerator": false
  },
  "totalNumberOfGuests": 3,
  "totalNumberOfModerators": 1
}

Sind Sie nicht sicher, wie Sie Ihr Projekt am Besten umsetzen sollen?

Sprechen Sie mit unserem Team über Ihre Pläne.