Как связать данные вызовов RingCentral и данные сообщений Glip по пользователю?

Как я могу связать данные вызова из RingCentral API с пользовательскими данными в Glip API. Насколько я могу судить, единственное совпадение - это собственные имена, расположенные в полях журнала вызовов to и from (которые не всегда присутствуют), которые могут быть сопоставлены с адресом электронной почты, а затем с пользователем Glip. Это кажется очень непрямым подходом к делу. Есть ли идентификаторы или что-то в этом роде, чтобы связать два API? В частности, я хотел бы знать, является ли звонок, исходящий от или исходящий от человека, также пользователем Glip в моей организации.

Пример API журнала вызовов RingCentral

https://developer.ringcentral.com/api-reference#Call-Log-loadCompanyCallLog

GET /restapi/v1.0/account/~/call-log

{
    "uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/account/11111111/call-log?view=Simple&showBlocked=true&withRecording=false&dateFrom=2018-11-09T07:00:00.000Z&page=1&perPage=100",
    "records": [
        {
            "uri": "https://platform.devtest.ringcentral.com/restapi/v1.0/account/11111111/call-log/abcdef0123456789?view=Simple",
            "id": "abcdef0123456789",
            "sessionId": "1234567890",
            "startTime": "2018-11-10T00:52:07.020Z",
            "duration": 11,
            "type": "Voice",
            "direction": "Inbound",
            "action": "Phone Call",
            "result": "Missed",
            "to": {
                "phoneNumber": "+16505550100"
            },
            "from": {
                "phoneNumber": "+12155550101",
                "location": "Philadelphia, PA"
            }
        },

Пример Glip Post API

https://developer.ringcentral.com/api-reference#Posts-listGlipGroupPosts

GET /restapi/v1.0/glip/groups/{groupId}/posts

{
  "records":[
    {
      "id":"1542094852",
      "groupId":"155654",
      "type":"TextMessage",
      "text":"",
      "creatorId":"glip-29507587",
      "addedPersonIds":null,
      "creationTime":"2018-05-31T14:45:16.822Z",
      "lastModifiedTime":"2018-05-31T14:45:16.822Z",
      "attachments":null,
      "activity":null,
      "title":null,
      "iconUri":null,
      "iconEmoji":null,
      "mentions":null
    }
  ]
}

person Grokify    schedule 10.11.2018    source источник
comment
Это очень странно для меня. Я мог бы поклясться, что задал этот вопрос... не знаю, почему мое имя было удалено.   -  person piisexactly3    schedule 26.06.2020
comment
Высока вероятность того, что вы задавали этот вопрос, но на Glip, а не на Stack Overflow, поэтому вопрос может показаться знакомым. Первоначально вопрос был опубликован в Glip, и я разместил / перефразировал вопрос с примерами и своим ответом здесь. Вы можете найти этот URL-адрес в Glip и найти цитируемый вопрос и мой ответ SO (10 ноября по времени UTC, 9 ноября по тихоокеанскому времени).   -  person Grokify    schedule 26.06.2020
comment
Ой ну спасибо. Я был действительно сбит с толку; не пытаясь быть конфронтационным   -  person piisexactly3    schedule 26.06.2020


Ответы (1)


Пользователи идентифицируются журналом вызовов extensionId и меткой personId, которые имеют одинаковое значение, когда пользователь является пользователем компании.

  • In the RingCentral Call Log API, each user is identified by an extensionId.
    • In the Company Call Log API (/restapi/v1.0/account/{accountId}/call-log), you will receive call logs for all users and, to identify calls for each user, you need to query the detailed view by adding the view=Detailed query string parameter and then find the extensionId in the call legs array since multiple users can be present in a call. Each leg will have an extension property with a extensionId and HATEOAS uri property to retrieve information for the user.
    • В API журнала вызовов пользователей (/restapi/v1.0/account/{accountId}/extension/{extensionId}/call-log) extensionId явно указано в URL-адресе.
  • In the Glip API, each user is identified by a personId. The personId appears as the creatorId and in other places in the Glip API.
    • When the Glip user is also a RingCentral user, the Glip personId value is the same as the extensionId, e.g. 12345678
    • Когда пользователь Glip является гостем и не присутствует в учетной записи RingCentral, значение Glip personId имеет префикс glip-, например. glip-12345678

Вот пример подробной записи журнала вызовов компании:

GET /restapi/v1.0/account/~/call-log?view=Detailed

{
  "uri":"https://platform.devtest.ringcentral.com/restapi/v1.0/account/11111111/call-log?view=Detailed&showBlocked=true&withRecording=false&dateFrom=2018-11-09T07:37:00.000Z&page=1&perPage=100",
  "records":[
    {
      "uri":"https://platform.devtest.ringcentral.com/restapi/v1.0/account/11111111/call-log/abcdef0123456789?view=Detailed",
      "id":"abcdef0123456789",
      "sessionId":"19923257004",
      "startTime":"2018-11-10T00:52:07.020Z",
      "duration":11,
      "type":"Voice",
      "direction":"Inbound",
      "action":"Phone Call",
      "result":"Missed",
      "to":{
        "phoneNumber":"+16505550100"
      },
      "from":{
        "phoneNumber":"+12155550101",
        "location":"Philadelphia, PA"
      },
      "transport":"PSTN",
      "lastModifiedTime":"2018-11-10T00:52:40.001Z",
      "billing":{
        "costIncluded":0,
        "costPurchased":0
      },
      "legs":[
        {
          "startTime":"2018-11-10T00:52:07.020Z",
          "duration":11,
          "type":"Voice",
          "direction":"Inbound",
          "action":"Phone Call",
          "result":"Missed",
          "to":{
            "phoneNumber":"+12675550100"
          },
          "from":{
            "phoneNumber":"+12155550101",
            "location":"Philadelphia, PA"
          },
          "transport":"PSTN",
          "billing":{
            "costIncluded":0,
            "costPurchased":0
          },
          "legType":"Accept",
          "master":true
        },
        {
          "startTime":"2018-11-10T00:52:07.050Z",
          "duration":11,
          "type":"Voice",
          "direction":"Inbound",
          "action":"Phone Call",
          "result":"Missed",
          "to":{
            "phoneNumber":"+12679304030",
            "name":"Sales Queue"
          },
          "from":{
            "phoneNumber":"+12155550101",
            "location":"Philadelphia, PA"
          },
          "extension":{
            "uri":"https://platform.devtest.ringcentral.com/restapi/v1.0/account/11111111/extension/22222222",
            "id":22222222
          },
          "transport":"PSTN",
          "legType":"Accept"
        },
        {
          "startTime":"2018-11-10T00:52:15.220Z",
          "duration":3,
          "type":"Voice",
          "direction":"Outbound",
          "action":"FindMe",
          "result":"Accepted",
          "to":{
            "phoneNumber":"+16505550100",
            "location":"Redwood City, CA"
          },
          "from":{
            "phoneNumber":"+12675550100",
            "name":"Tiger RingForce"
          },
          "extension":{
            "uri":"https://platform.devtest.ringcentral.com/restapi/v1.0/account/111111111/extension/33333333",
            "id":33333333
          },
          "transport":"PSTN",
          "legType":"FindMe"
        },
        {
          "startTime":"2018-11-10T00:52:15.257Z",
          "duration":3,
          "type":"Voice",
          "direction":"Outbound",
          "action":"FindMe",
          "result":"Accepted",
          "to":{
            "phoneNumber":"+18185550100",
            "location":"North Hollywood, CA"
          },
          "from":{
            "phoneNumber":"+12675550100",
            "name":"Tiger RingForce"
          },
          "extension":{
            "uri":"https://platform.devtest.ringcentral.com/restapi/v1.0/account/130709004/extension/130836004",
            "id":130836004
          },
          "transport":"PSTN",
          "legType":"FindMe"
        }
      ]
    }
  ]
}

Чтобы сопоставить пользователя Glip, просто сопоставьте его с пользователями Glip с personId, который соответствует журналу вызовов extensionId.

person Grokify    schedule 10.11.2018
comment
Спасибо за подробное объяснение. Я упустил из виду поле расширения в документации, но теперь все стало яснее. - person piisexactly3; 12.11.2018