finos / voice-metadata-standard

This is a project from FINOS Voice program to define a standard for call metadata.
Apache License 2.0
25 stars 9 forks source link

Working branch to fix #9 #44

Closed vitorespindola closed 4 years ago

vitorespindola commented 5 years ago

This is a draft PR to discuss possible solutions to #9 .

The branch was created in the finos repository to allow other contributors to commit to this branch while we are working on this issue. This will enable us to evolve in this question by updating the draft while the discussion is active.

vitorespindola commented 5 years ago

I'll list some scenarios to exercise this proposal. Please contribute by adding some examples of your own systems, validate the proposal or improve the format of the examples.

Scenario: Dialtone call between two participants

Jim starts a call with Joe by dialing Joe's number on system.

  1. 2019-10-03T09:00:00 - Jim starts the call with Joe
  2. 2019-10-03T09:00:20 - Joe answers the call
  3. 2019-10-03T09:01:10 - Joe hangup the call

Results:

Resulting JSON(participants chunk):

{
    "source": {
        "name": "Jim",
        "address": "2000",
        "startTime": "2019-10-03T09:00:00Z",
        "joinTime": "2019-10-03T09:00:20Z",
        "exitTime": "2019-10-03T09:01:10Z",
    },
    "participants": [
        {
            "name": "Joe",
            "address": "+15555551234",
            "startTime": "2019-10-03T09:00:20Z",
            "joinTime": "2019-10-03T09:00:20Z",
            "exitTime": "2019-10-03T09:01:10Z",
        },
    ]
}

Scenario: Shoutdown call between two participants

Jim starts a call with Joe on the speaker line by performing a PTT.

  1. 2019-10-03T09:00:00 - Jim starts the call with Joe
  2. 2019-10-03T09:00:02 - Joe starts shouting to Jim
  3. 2019-10-03T09:00:06 - Joe stops shouting to Jim
  4. 2019-10-03T09:00:10 - Jim stops talking to Joe

Results:

Resulting JSON(participants chunk):

{
    "source": {
        "name": "Jim",
        "address": "jim@companya.com",
        "startTime": "2019-10-03T09:00:00Z",
        "joinTime": "2019-10-03T09:00:00Z",
        "exitTime": "2019-10-03T09:00:10Z",
    },
    "participants": [
        {
            "name": "Joe",
            "address": "joe@companyb.com",
            "startTime": "2019-10-03T09:00:02Z",
            "joinTime": "2019-10-03T09:00:02Z",
            "exitTime": "2019-10-03T09:00:06Z",
        },
    ]
}

Scenario: Shoutdown call to a trading desk(no specific far end user)

Jim starts a call with Energy Desk by performing a PTT. Matt and Steve are members of Energy Desk.

  1. 2019-10-03T09:00:00 - Jim starts the call with Energy Desk
  2. 2019-10-03T09:00:10 - Jim stops talking to Energy Desk
  3. 2019-10-03T09:00:12 - Matt starts shouting to Jim
  4. 2019-10-03T09:00:16 - Matt stops shouting to Jim
  5. 2019-10-03T09:00:18 - Steve starts shouting to Jim
  6. 2019-10-03T09:00:23 - Steve stops talking to Jim
  7. 2019-10-03T09:00:23 - Jim starts shouting to Energy Desk
  8. 2019-10-03T09:00:28 - Jim stops talking to Energy Desk

Results:

Resulting JSON(participants chunk):

{
    "source": {
        "name": "Jim",
        "address": "jim@companya.com",
        "startTime": "2019-10-03T09:00:00Z",
        "joinTime": "2019-10-03T09:00:00Z",
        "exitTime": "2019-10-03T09:00:28Z",
    },
    "participants": [
        {
            "name": "Matt",
            "address": "matt@companyb.com",
            "groupName": "Energy Desk",
            "startTime": "2019-10-03T09:00:12Z",
            "joinTime": "2019-10-03T09:00:12Z",
            "exitTime": "2019-10-03T09:00:16Z",
        },
        {
            "name": "Steve",
            "address": "steve@companyb.com",
            "startTime": "2019-10-03T09:00:18Z",
            "joinTime": "2019-10-03T09:00:18Z",
            "exitTime": "2019-10-03T09:00:23Z",
        },
    ]
}
vitorespindola commented 4 years ago

@pinczo @kemmiso @tschady We can move forward with this PR now. Could you please review and approve/comment on it?

Here are the updated scenarios, after @pinczo contribution:

Scenario: Dialtone call between two participants

Jim starts a call with Joe by dialing Joe's number on system.

  1. 2019-10-03T09:00:00 - Jim starts the call with Joe
  2. 2019-10-03T09:00:20 - Joe answers the call
  3. 2019-10-03T09:01:10 - Joe hangup the call

Results:

Resulting JSON(participants chunk):

{
    "participants": [
        {
            "name": "Jim",
            "address": "2000",
            "involvement": "source",
            "startTime": "2019-10-03T09:00:00Z",
            "joinTime": "2019-10-03T09:00:20Z",
            "exitTime": "2019-10-03T09:01:10Z",
        },
        {
            "name": "Joe",
            "address": "+15555551234",
            "involvement": "destination",
            "startTime": "2019-10-03T09:00:20Z",
            "joinTime": "2019-10-03T09:00:20Z",
            "exitTime": "2019-10-03T09:01:10Z",
        },
    ]
}

Scenario: Shoutdown call between two participants

Jim starts a call with Joe on the speaker line by performing a PTT.

  1. 2019-10-03T09:00:00 - Jim starts the call with Joe
  2. 2019-10-03T09:00:02 - Joe starts shouting to Jim
  3. 2019-10-03T09:00:06 - Joe stops shouting to Jim
  4. 2019-10-03T09:00:10 - Jim stops talking to Joe

Results:

Resulting JSON(participants chunk):

{
    "participants": [
        {
            "name": "Jim",
            "address": "jim@companya.com",
            "involvement": "source",
            "startTime": "2019-10-03T09:00:00Z",
            "joinTime": "2019-10-03T09:00:00Z",
            "exitTime": "2019-10-03T09:00:10Z",
        },
        {
            "name": "Joe",
            "address": "joe@companyb.com",
            "involvement": "destination",
            "startTime": "2019-10-03T09:00:02Z",
            "joinTime": "2019-10-03T09:00:02Z",
            "exitTime": "2019-10-03T09:00:06Z",
        },
    ]
}

Scenario: Shoutdown call to a trading desk(no specific far end user)

Jim starts a call with Energy Desk by performing a PTT. Matt and Steve are members of Energy Desk.

  1. 2019-10-03T09:00:00 - Jim starts the call with Energy Desk
  2. 2019-10-03T09:00:10 - Jim stops talking to Energy Desk
  3. 2019-10-03T09:00:12 - Matt starts shouting to Jim
  4. 2019-10-03T09:00:16 - Matt stops shouting to Jim
  5. 2019-10-03T09:00:18 - Steve starts shouting to Jim
  6. 2019-10-03T09:00:23 - Steve stops talking to Jim
  7. 2019-10-03T09:00:23 - Jim starts shouting to Energy Desk
  8. 2019-10-03T09:00:28 - Jim stops talking to Energy Desk

Results:

Resulting JSON(participants chunk):

{
    "participants": [
        {
            "name": "Jim",
            "address": "jim@companya.com",
            "involvement": "source",
            "startTime": "2019-10-03T09:00:00Z",
            "joinTime": "2019-10-03T09:00:00Z",
            "exitTime": "2019-10-03T09:00:28Z",
        },
        {
            "name": "Matt",
            "address": "matt@companyb.com",
            "groupName": "Energy Desk",
            "involvement": "participant",
            "startTime": "2019-10-03T09:00:12Z",
            "joinTime": "2019-10-03T09:00:12Z",
            "exitTime": "2019-10-03T09:00:16Z",
        },
        {
            "name": "Steve",
            "address": "steve@companyb.com",
            "groupName": "Energy Desk",
            "involvement": "participant",
            "startTime": "2019-10-03T09:00:18Z",
            "joinTime": "2019-10-03T09:00:18Z",
            "exitTime": "2019-10-03T09:00:23Z",
        },
    ]
}