Veeting Rooms Web Hooks

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.

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": []
          }
      }
      

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"
        ]
      }