Genesys Cloud - Main

 View Only

Sign Up

  • 1.  Report on Transcripts by Division

    Posted 6 days ago

    Hi All,

    I am trying to create a report where I will be able to summarise which Divisions and Queues consumed Transcription minutes. I need this to align with the billing period of Invoices. 

    I have been able to create the extraction but the minutes are extremly high compared to the consumed. Is there anyone that can assist with the calculation used by Genesys for the consumption numbers used in invoicing?


    #Reporting/Analytics
    #System/PlatformAdministration

    ------------------------------
    Justin Elms
    Senior Product Owner, Safe Program Consultant
    ------------------------------


  • 2.  RE: Report on Transcripts by Division

    Posted 6 days ago

    I'm commenting here to follow the topic.
    As far as I know, there are no APIs that we can consume related to billings.

    I only know one: 

    get /api/v2/billing/reports/billableusage
     
    {
      "startDate": "2025-07-01T03:00:00Z",
      "endDate": "2025-07-08T03:00:00Z",
      "status": "Complete",
      "usages": [
        {
          "name": "Genesys Cloud CX 1 Concorrent",
          "resources": [
           {
              "name": "koliveira@interaxa.com",
              "date": "2025-07-01T03:19:11.696Z"
            },
            {
              "name": "agente@interaxa.com",
              "date": "2025-07-02T01:28:06.606Z"
            }
          ]
        }
      ],
      "selfUri": "/api/v2/billing/reports/billableusage"
    }


    ------------------------------
    Kaio Oliveira
    Interaxa
    ------------------------------



  • 3.  RE: Report on Transcripts by Division

    Posted 6 days ago

    Hi @Justin Elms

    Sorry if I didn't understand you correctly. To obtain the total transcribed time, from my point of view I understand that you have identified the queues that have transcription enabled.

    To do this, I would go to the 'Queue Performance' report and filter by these fields and Queues with transcription:

    With the Talk Time, you have the total time your queue has spoken and therefore should have been transcribed.

    Sorry if this is not what you needed.

    cheers.



    ------------------------------
    Rafael Gomez Sanchis
    ------------------------------



  • 4.  RE: Report on Transcripts by Division
    Best Answer

    Posted 6 days ago

    Hi Justin

    Hope the procedure below can help.


    Genesys uses "media minutes" for billing Speech & Text Analytics (STA) / Transcription.
    These are not simply the duration of calls.

    Billing is based on audio duration actually processed by Speech Transcription

    For voice, the calculation is roughly:

    Transcription Minutes = Total processed audio duration (in minutes)

    Voice – Divisions, Queues, Transcription Minutes (approx.)

    Endpoint:
    POST /api/v2/analytics/conversations/aggregates/query


    Example body (for a billing month):
    {
      "interval": "2025-11-01T00:00:00.000Z/2025-11-30T23:59:59.999Z",
      "granularity": "P1M",
      "groupBy": [
        "divisionId",
        "queueId",
        "mediaType"
      ],
      "filter": {
        "type": "and",
        "predicates": [
          {
            "type": "dimension",
            "dimension": "mediaType",
            "operator": "matches",
            "value": "voice"
          },
          {
            "type": "dimension",
            "dimension": "hasRecording",
            "operator": "matches",
            "value": "true"
          }
        ]
      },
      "metrics": [
        "tRecording"      // total recorded audio ms
      ]
    }


    How to get "Transcription Minutes" from this:
    For each row where mediaType = voice:
    TranscriptionMinutes_Voice = tRecording / 60000

    …and then aggregate by:
    divisionId → map to division name
    queueId → map to queue name

    If you want to exclude internal/consult calls, you can tighten the filter with a segmentType predicate or direction = inbound/outbound.
    2️⃣ Digital – Divisions, Queues, "Transcription Minutes" Equivalent
    For chat/email, there's no real "minutes" of audio, so billing is typically based on text volume. You can approximate consumption using the Transcripts Aggregates API.

    Endpoint:
    POST /api/v2/analytics/transcripts/aggregates/query


    Example body:
    {
      "interval": "2025-11-01T00:00:00.000Z/2025-11-30T23:59:59.999Z",
      "granularity": "P1M",
      "groupBy": [
        "divisionId",
        "queueId",
        "mediaType"
      ],
      "filter": {
        "type": "and",
        "predicates": [
          {
            "type": "dimension",
            "dimension": "mediaType",
            "operator": "matches",
            "value": "chat"
          }
        ]
      },
      "metrics": [
        "oTranscriptsByteCount"   // total bytes of transcript text
      ]
    }


    If you also want email, add an or for mediaType:
    "filter": {
      "type": "and",
      "clauses": [
        {
          "type": "or",
          "predicates": [
            {
              "type": "dimension",
              "dimension": "mediaType",
              "operator": "matches",
              "value": "chat"
            },
            {
              "type": "dimension",
              "dimension": "mediaType",
              "operator": "matches",
              "value": "email"
            }
          ]
        }
      ]
    }


    Converting to a "minutes" approximation
    You'll need to align this with your billing model. A common internal approximation is something like:
    TranscriptionMinutes_Digital = (oTranscriptsByteCount / 1024 / X)

    Where X is your assumed "KB per minute equivalent" (you'll get that from your commercial / Genesys account team or by reverse-engineering from invoice totals).
    Combining Voice + Digital per Division and Queue
    Once you call both APIs:

    Normalize keys: divisionId, queueId, mediaType
    Convert:

    VoiceMinutes = tRecording / 60000
    DigitalMinutes = oTranscriptsByteCount → minutes via your rule

    Create a final dataset:

    Division    Queue    Media Type    Voice Minutes    Digital Minutes        Total "Transcription"
    Div A        Q1        voice        12,345.6            –                12,345.6
    Div A        Q1        chat            –            2,100.0                2,100.0
    …    …    …    …    …    …

    Practical step-by-step (summary)

    Define the billing period
    Example: 2025-11-01 to 2025-11-30 (in UTC).

    Call Conversations Aggregates (voice)
    POST /api/v2/analytics/conversations/aggregates/query

    Group by: divisionId, queueId, mediaType
    Metric: tRecording
    Calculate: Minutes_Voice = tRecording / 60000.

    Call Transcripts Aggregates (digital)
    POST /api/v2/analytics/transcripts/aggregates/query

    Group by: divisionId, queueId, mediaType
    Metric: oTranscriptsByteCount

    Convert to minutes according to your business rule (or keep it as bytes/KB).

    Fetch reference tables
    Divisions: GET /api/v2/authorization/divisions
    Queues: GET /api/v2/routing/queues

    Join everything in BI / Excel

    Relate using the IDs (divisionId, queueId).
    Create columns such as:
    Division Name
    Queue Name
    Voice Minutes
    Digital Bytes/KB or Digital Minutes
    Total "Transcription Consumption" (if you want to sum voice + digital).



    ------------------------------
    David Betoni
    Principal PS Consultant
    ------------------------------



  • 5.  RE: Report on Transcripts by Division

    Posted 3 days ago

    Thank you so much @David Betoni! This helps alot!!I will give this a try.



    ------------------------------
    Justin Elms
    Senior Product Owner, Safe Program Consultant
    ------------------------------



  • 6.  RE: Report on Transcripts by Division

    Posted 3 days ago

    @Rafael Gomez Sanchis Thank you!



    ------------------------------
    Justin Elms
    Senior Product Owner, Safe Program Consultant
    ------------------------------



  • 7.  RE: Report on Transcripts by Division

    Posted 3 days ago

    Thanks David



    ------------------------------
    Alexandre Araujo
    Sr. PS Consultant
    ------------------------------