# Asapp > ## Documentation Index --- # Source: https://docs.asapp.com/apis/metadata/add-a-conversation-metadata.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Add a conversation metadata > Add metadata attributes of one issue/conversation ## OpenAPI ````yaml api-specs/metadata-ingestion.yaml post /metadata-ingestion/v1/single-convo-metadata openapi: 3.0.1 info: title: Metadata Ingestion API description: > The Metadata Ingestion API is a mechanism to submit attributes about a single entity or multiple entities to ASAPP. Supported entities to which attributes can be appended include customers, agents, and conversations. version: 1.0.0 servers: - url: https://api.sandbox.asapp.com security: - API-ID: [] API-Secret: [] tags: - name: Metadata description: API to submit entity's attributes to ASAPP paths: /metadata-ingestion/v1/single-convo-metadata: post: tags: - Metadata summary: Add a conversation metadata description: | Add metadata attributes of one issue/conversation operationId: singleConvoMetadata requestBody: required: true content: application/json: schema: description: A set of conversation metadata attributes type: object properties: externalConversationId: description: Conversation ID from the external chat / voice system type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 example: issue1389 eventId: description: > An event id used to track the submission; if none is provided, service will generate one type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: eventId-1388 lobId: description: The line of business id type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: '1038' lobName: description: The descriptive name of the line of business type: string maxLength: 256 nullable: true example: manufacturing groupId: description: The group id of which the agent belong to type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: group59 groupName: description: The descriptive name of the group type: string maxLength: 256 nullable: true example: groupXYZ agentRoutingCode: description: The agent's routing attribute type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: route-13988 campaign: description: The activities related to the issue type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: campaign-A deviceType: description: The client's device type type: string enum: - TABLET - PHONE - DESKTOP - WATCH - OTHER nullable: true example: TABLET platform: description: | The client's platform type WAB: WhatsApp Business type: string enum: - SMS - WEB - IOS - ANDROID - APP - LOCAL - VOICE - VOICE_IOS - VOICE_ANDROID - VOICE_ECHO - VOICE_HOMEPOD - VOICE_GGLHOME - VOICE_WEB - APPLEBIZ - GOOGLEBIZ - GBM - WAB nullable: true example: IOS companySegment: description: The company's segment of which the issue belongs to type: array items: type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 64 nullable: true example: - Sales - Marketing companySubdivision: description: The company's subdivision of which the issue belongs to type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: Operating businessRule: description: The business rule to use type: string maxLength: 256 nullable: true example: Apply customer's discount entryType: description: The way the issue started and created in the system type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: reactive operatingSystem: description: The operating system used to enter the issue type: string enum: - MAC_OS - LINUX - WINDOWS - ANDROID - IOS - OTHER nullable: true example: MAC_OS browserType: description: The browser type used type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 64 nullable: true example: Safari browserVersion: description: The browser version used type: string pattern: '[a-zA-Z0-9\-\_\.]+' maxLength: 16 nullable: true example: 14.1.2 attributes: description: A map of key-value pairs for extra metadata attributes type: array items: description: A key-value pair of additional metadata attributes type: object properties: name: description: The name of the attribute type: string maxLength: 256 value: description: The value of the named attribute type: string maxLength: 1024 example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value maxItems: 10 nullable: true example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value required: - externalConversationId example: externalConversationId: id-1389 eventId: eventId-1388 lobId: '1038' lobName: manufacturing groupId: group59 groupName: groupXYZ agentRoutingCode: route-13988 campaign: campaign-A deviceType: TABLET platform: IOS companySegment: - Sales - Marketing companySubdivision: operating businessRule: Apply customer's discount entryType: reactive operatingSystem: MAC_OS browserType: Safari browserVersion: 14.1.2 attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value responses: '200': description: > 200 - Success Submit a single item to the service to be ingested. Record can be traced back to the submitted record by the eventId. A message sent status will be returned with no error message for successful input checks. content: application/json: schema: type: object properties: result: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - result example: result: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' '400': description: > 400 - Bad request Submit a single item to the service to be ingested. Record can be traced back to the submitted record by the eventId. A message sent status will be returned with an error message for bad input failure. content: application/json: schema: type: object properties: result: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - result example: result: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' '401': description: 401 - Unauthorized content: application/json: schema: description: Unauthorized response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 401-01 message: Unauthorized description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '403': description: 403 - Forbidden content: application/json: schema: description: Forbidden response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 403-01 message: Forbidden Response description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '404': description: 404 - Not Found content: application/json: schema: description: Not Found response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 404-01 message: Not Found description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '409': description: 409 - Conflict content: application/json: schema: description: Conflict response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 409-01 message: Conflict description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '413': description: 413 - Request Entity Too Large content: application/json: schema: description: Request Entity Too Large response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 413-01 message: Request Entity Too Large description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '422': description: 422 - Unprocessable Entity content: application/json: schema: description: Unprocessable Entity response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 422-01 message: Unprocessable Entity description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '429': description: 429 - Too Many Requests content: application/json: schema: description: Too Many Requests response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 429-01 message: Too Many Requests description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '503': description: 503 - Service Unavailable content: application/json: schema: description: Service Unavailable response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 503-01 message: Service Unavailable description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message default: description: 500 - Internal Server Error content: application/json: schema: description: Default error response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 500-01 message: Internal server error description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message components: securitySchemes: API-ID: type: apiKey in: header name: asapp-api-id API-Secret: type: apiKey in: header name: asapp-api-secret ```` --- # Source: https://docs.asapp.com/apis/metadata/add-a-customer-metadata.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Add a customer metadata > Add metadata attributes of one customer ## OpenAPI ````yaml api-specs/metadata-ingestion.yaml post /metadata-ingestion/v1/single-customer-metadata openapi: 3.0.1 info: title: Metadata Ingestion API description: > The Metadata Ingestion API is a mechanism to submit attributes about a single entity or multiple entities to ASAPP. Supported entities to which attributes can be appended include customers, agents, and conversations. version: 1.0.0 servers: - url: https://api.sandbox.asapp.com security: - API-ID: [] API-Secret: [] tags: - name: Metadata description: API to submit entity's attributes to ASAPP paths: /metadata-ingestion/v1/single-customer-metadata: post: tags: - Metadata summary: Add a customer metadata description: | Add metadata attributes of one customer operationId: singleCustomerMetadata requestBody: required: true content: application/json: schema: description: A set of customer metadata attributes type: object properties: externalConversationId: description: Conversation ID from the external chat / voice system type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 example: issue509 externalCustomerId: description: The customer id involved in respect to the issue in question type: string pattern: '[a-zA-Z0-9\-\_\.\@]+' maxLength: 256 example: 555.555.0100-jdoe@example.com eventId: description: > An event id used to track the submission; if none is provided, service will generate one type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: eventId-1938 status: description: >- The descriptive label to describe the customer's status and/or type type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: new phoneNumber: description: The customer's phone number type: string pattern: '[0-9\-\.\(\)\+]+' maxLength: 32 nullable: true example: (555)555-0100 emailAddress: description: The customer's email address type: string format: email nullable: true example: jdoe@example.com userId: description: The customer's user Id type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: user908038 addressCountry: description: The country portion of the customer's address type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 128 nullable: true example: United-States addressState: description: The state portion of the customer's address type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 128 nullable: true example: New-York addressZipcode: description: The zipcode/postal code portion of the customer's address type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 16 nullable: true example: '10001' attributes: description: A map of key-value pairs for extra metadata attributes type: array items: description: A key-value pair of additional metadata attributes type: object properties: name: description: The name of the attribute type: string maxLength: 256 value: description: The value of the named attribute type: string maxLength: 1024 example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value maxItems: 10 nullable: true example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value required: - externalConversationId - externalCustomerId example: externalConversationId: id-509 externalCustomerId: 555.555.0100-jdoe@example.com eventId: eventId-1938 status: new phoneNumber: (555)555-0100 emailAddress: jdoe@example.com userId: user908038 addressCountry: United-States addressState: New-York addressZipcode: '10001' attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value responses: '200': description: > 200 - Success Submit a single item to the service to be ingested. Record can be traced back to the submitted record by the eventId. A message sent status will be returned with no error message for successful input checks. content: application/json: schema: type: object properties: result: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - result example: result: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' '400': description: > 400 - Bad request Submit a single item to the service to be ingested. Record can be traced back to the submitted record by the eventId. A message sent status will be returned with an error message for bad input failure. content: application/json: schema: type: object properties: result: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - result example: result: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' '401': description: 401 - Unauthorized content: application/json: schema: description: Unauthorized response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 401-01 message: Unauthorized description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '403': description: 403 - Forbidden content: application/json: schema: description: Forbidden response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 403-01 message: Forbidden Response description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '404': description: 404 - Not Found content: application/json: schema: description: Not Found response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 404-01 message: Not Found description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '409': description: 409 - Conflict content: application/json: schema: description: Conflict response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 409-01 message: Conflict description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '413': description: 413 - Request Entity Too Large content: application/json: schema: description: Request Entity Too Large response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 413-01 message: Request Entity Too Large description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '422': description: 422 - Unprocessable Entity content: application/json: schema: description: Unprocessable Entity response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 422-01 message: Unprocessable Entity description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '429': description: 429 - Too Many Requests content: application/json: schema: description: Too Many Requests response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 429-01 message: Too Many Requests description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '503': description: 503 - Service Unavailable content: application/json: schema: description: Service Unavailable response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 503-01 message: Service Unavailable description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message default: description: 500 - Internal Server Error content: application/json: schema: description: Default error response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 500-01 message: Internal server error description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message components: securitySchemes: API-ID: type: apiKey in: header name: asapp-api-id API-Secret: type: apiKey in: header name: asapp-api-secret ```` --- # Source: https://docs.asapp.com/apis/metadata/add-an-agent-metadata.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Add an agent metadata > Add metadata attributes of one agent ## OpenAPI ````yaml api-specs/metadata-ingestion.yaml post /metadata-ingestion/v1/single-agent-metadata openapi: 3.0.1 info: title: Metadata Ingestion API description: > The Metadata Ingestion API is a mechanism to submit attributes about a single entity or multiple entities to ASAPP. Supported entities to which attributes can be appended include customers, agents, and conversations. version: 1.0.0 servers: - url: https://api.sandbox.asapp.com security: - API-ID: [] API-Secret: [] tags: - name: Metadata description: API to submit entity's attributes to ASAPP paths: /metadata-ingestion/v1/single-agent-metadata: post: tags: - Metadata summary: Add an agent metadata description: | Add metadata attributes of one agent operationId: singleAgentMetadata requestBody: required: true content: application/json: schema: description: A set of agent metadata attributes type: object properties: externalAgentId: description: The agent id in question type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 example: agent158 eventId: description: > An event id used to track the submission; if none is provided, service will generate one type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: eventId-158 startTs: description: The date and time when the agent is hired in ISO-8601 type: string format: date-time nullable: true example: '2022-07-08T11:15:53.237517000Z' lobId: description: The line of business id type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: '1038' lobName: description: The descriptive name of the line of business type: string maxLength: 256 nullable: true example: manufacturing groupId: description: The group id of which the agent belong to type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: group5 groupName: description: The descriptive name of the group type: string maxLength: 256 nullable: true example: XYZ agentName: description: The name of the agent type: string maxLength: 256 nullable: true example: Jane Doe agentLocation: description: The location (or address) of where the agent worked type: string maxLength: 256 nullable: true example: Northern-California supervisorId: description: The supervisor id of who the agent report to type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: '3080' supervisorName: description: The name of the agent's supervisor type: string maxLength: 256 nullable: true example: Linda Lemon languages: description: | A list of agent's known language codes in ISO 639 e.g., English (United States) code = en-US type: array items: type: string pattern: '[a-zA-Z0-9\-]+' maxLength: 16 nullable: true example: - en-us - zh-hans-hk concurrency: description: The number of issues that an agent can take at a time type: integer nullable: true example: 3 categoryLabel: description: >- The category label that indicates the types of workflows an agent have access to or problems they solved type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: Tier-2-Escalation accountAccessLevel: description: >- The levels of mapping that an agent have access to make changes to customer accounts type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: High-Profile ranking: description: >- Some numerical value indicating relative or absolute performance on a single scale type: integer nullable: true example: 78 vendor: description: >- Vendor or BPO (Business Process Outsourcing) that the agent is part of type: string maxLength: 256 nullable: true example: Contracting jobTitle: description: The agent's job title type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: Booking-Manager jobRole: description: The agent's role type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: booking workShift: description: The hours or shift name they work type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: afternoon emailAddress: description: The agent's email address type: string format: email nullable: true example: jdoe@example.com attributes: description: A map of key-value pairs for extra metadata attributes type: array items: description: A key-value pair of additional metadata attributes type: object properties: name: description: The name of the attribute type: string maxLength: 256 value: description: The value of the named attribute type: string maxLength: 1024 example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value maxItems: 10 nullable: true example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value required: - externalAgentId example: externalAgentId: agent158 startTs: '2022-07-08T11:15:53.237517000Z' lobId: '1038' lobName: manufacturing groupId: group5 groupName: XYZ agentName: Jane Doe agentLocation: Northern-California supervisorId: '3080' supervisorName: Linda Lemon languages: - en-us - zh-hans-hk concurrency: 3 categoryLabel: Tier-2-Escalation accountAccessLevel: High-Profile ranking: 78 vendor: Contracting jobTitle: Booking-Manager jobRole: booking workShift: afternoon emailAddress: jdoe@example.com attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value responses: '200': description: > 200 - Success Submit a single item to the service to be ingested. Record can be traced back to the submitted record by the eventId. A message sent status will be returned with no error message for successful input checks. content: application/json: schema: type: object properties: result: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - result example: result: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' '400': description: > 400 - Bad request Submit a single item to the service to be ingested. Record can be traced back to the submitted record by the eventId. A message sent status will be returned with an error message for bad input failure. content: application/json: schema: type: object properties: result: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - result example: result: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' '401': description: 401 - Unauthorized content: application/json: schema: description: Unauthorized response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 401-01 message: Unauthorized description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '403': description: 403 - Forbidden content: application/json: schema: description: Forbidden response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 403-01 message: Forbidden Response description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '404': description: 404 - Not Found content: application/json: schema: description: Not Found response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 404-01 message: Not Found description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '409': description: 409 - Conflict content: application/json: schema: description: Conflict response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 409-01 message: Conflict description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '413': description: 413 - Request Entity Too Large content: application/json: schema: description: Request Entity Too Large response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 413-01 message: Request Entity Too Large description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '422': description: 422 - Unprocessable Entity content: application/json: schema: description: Unprocessable Entity response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 422-01 message: Unprocessable Entity description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '429': description: 429 - Too Many Requests content: application/json: schema: description: Too Many Requests response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 429-01 message: Too Many Requests description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '503': description: 503 - Service Unavailable content: application/json: schema: description: Service Unavailable response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 503-01 message: Service Unavailable description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message default: description: 500 - Internal Server Error content: application/json: schema: description: Default error response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 500-01 message: Internal server error description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message components: securitySchemes: API-ID: type: apiKey in: header name: asapp-api-id API-Secret: type: apiKey in: header name: asapp-api-secret ```` --- # Source: https://docs.asapp.com/apis/metadata/add-multiple-agent-metadata.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Add multiple agent metadata > Add multiple agent metadata items; submit items in a batch in one request ## OpenAPI ````yaml api-specs/metadata-ingestion.yaml post /metadata-ingestion/v1/many-agent-metadata openapi: 3.0.1 info: title: Metadata Ingestion API description: > The Metadata Ingestion API is a mechanism to submit attributes about a single entity or multiple entities to ASAPP. Supported entities to which attributes can be appended include customers, agents, and conversations. version: 1.0.0 servers: - url: https://api.sandbox.asapp.com security: - API-ID: [] API-Secret: [] tags: - name: Metadata description: API to submit entity's attributes to ASAPP paths: /metadata-ingestion/v1/many-agent-metadata: post: tags: - Metadata summary: Add multiple agent metadata description: > Add multiple agent metadata items; submit items in a batch in one request operationId: manyAgentMetadata requestBody: required: true content: application/json: schema: description: >- A request to send more than one agent metadata; send a list of items type: object properties: items: type: array items: description: A set of agent metadata attributes type: object properties: externalAgentId: description: The agent id in question type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 example: agent158 eventId: description: > An event id used to track the submission; if none is provided, service will generate one type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: eventId-158 startTs: description: The date and time when the agent is hired in ISO-8601 type: string format: date-time nullable: true example: '2022-07-08T11:15:53.237517000Z' lobId: description: The line of business id type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: '1038' lobName: description: The descriptive name of the line of business type: string maxLength: 256 nullable: true example: manufacturing groupId: description: The group id of which the agent belong to type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: group5 groupName: description: The descriptive name of the group type: string maxLength: 256 nullable: true example: XYZ agentName: description: The name of the agent type: string maxLength: 256 nullable: true example: Jane Doe agentLocation: description: The location (or address) of where the agent worked type: string maxLength: 256 nullable: true example: Northern-California supervisorId: description: The supervisor id of who the agent report to type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: '3080' supervisorName: description: The name of the agent's supervisor type: string maxLength: 256 nullable: true example: Linda Lemon languages: description: | A list of agent's known language codes in ISO 639 e.g., English (United States) code = en-US type: array items: type: string pattern: '[a-zA-Z0-9\-]+' maxLength: 16 nullable: true example: - en-us - zh-hans-hk concurrency: description: The number of issues that an agent can take at a time type: integer nullable: true example: 3 categoryLabel: description: >- The category label that indicates the types of workflows an agent have access to or problems they solved type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: Tier-2-Escalation accountAccessLevel: description: >- The levels of mapping that an agent have access to make changes to customer accounts type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: High-Profile ranking: description: >- Some numerical value indicating relative or absolute performance on a single scale type: integer nullable: true example: 78 vendor: description: >- Vendor or BPO (Business Process Outsourcing) that the agent is part of type: string maxLength: 256 nullable: true example: Contracting jobTitle: description: The agent's job title type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: Booking-Manager jobRole: description: The agent's role type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: booking workShift: description: The hours or shift name they work type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: afternoon emailAddress: description: The agent's email address type: string format: email nullable: true example: jdoe@example.com attributes: description: A map of key-value pairs for extra metadata attributes type: array items: description: A key-value pair of additional metadata attributes type: object properties: name: description: The name of the attribute type: string maxLength: 256 value: description: The value of the named attribute type: string maxLength: 1024 example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value maxItems: 10 nullable: true example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value required: - externalAgentId example: externalAgentId: agent158 startTs: '2022-07-08T11:15:53.237517000Z' lobId: '1038' lobName: manufacturing groupId: group5 groupName: XYZ agentName: Jane Doe agentLocation: Northern-California supervisorId: '3080' supervisorName: Linda Lemon languages: - en-us - zh-hans-hk concurrency: 3 categoryLabel: Tier-2-Escalation accountAccessLevel: High-Profile ranking: 78 vendor: Contracting jobTitle: Booking-Manager jobRole: booking workShift: afternoon emailAddress: jdoe@example.com attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value minItems: 1 maxItems: 1000 example: items: - externalAgentId: agent158 startTs: '2022-07-08T11:15:53.237517000Z' lobId: '1038' lobName: manufacturing groupId: group5 groupName: XYZ agentName: Jane Doe agentLocation: Northern-California supervisorId: '3080' supervisorName: Linda Lemon languages: - en-us - zh-hans-hk - es-pe concurrency: 3 categoryLabel: Tier-2-Escalation accountAccessLevel: High-Profile ranking: 78 vendor: Contracting jobTitle: Booking-Manager jobRole: booking workShift: afternoon emailAddress: jdoe@example.com attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value - externalAgentId: agent392 startTs: '2021-09-02T11:15:53.237517000Z' lobId: '968' lobName: insurance groupId: group3 groupName: DFG agentName: Jonathan Master agentLocation: Southern-California supervisorId: '1290' supervisorName: John Luna languages: - en-us concurrency: 3 categoryLabel: Tier-1-Service accountAccessLevel: High-Profile ranking: 75 vendor: Contracting jobTitle: Customer-Service jobRole: Support workShift: afternoon emailAddress: jmaster@example.com attributes: - name: attr1_name value: attr1_value - externalAgentId: agent6922 startTs: null - externalAgentId: agent222 - externalAgentId: agent333 emailAddress: jdoe@example.com responses: '200': description: > 200 - Success | Partial Success Submit a batch of items to the service to be ingested. Record can be traced back to the submitted record by the eventId. If any of the records encounter issue during the ingestion, a message sent status will be returned with an error message for each record. A 200 success is returned as long as there is one item ingested successfully, i.e., "partial success". content: application/json: schema: type: object properties: errorCount: description: Number of message sent with error(s) type: integer results: description: A list of send result type: array items: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - errorCount - results example: errorCount: 1 results: - eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' - eventId: fcf99667-feaf-11ec-a42e-11799134528c error: '' '400': description: > 400 - Bad request Submit a batch of items to the service to be ingested. Record can be traced back to the submitted record by the eventId. If any of the records encounter issue during the ingestion, a message sent status will be returned with an error message for each record. All items in the batch encountered client input validation failures. content: application/json: schema: type: object properties: errorCount: description: Number of message sent with error(s) type: integer results: description: A list of send result type: array items: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - errorCount - results example: errorCount: 1 results: - eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' - eventId: fcf99667-feaf-11ec-a42e-11799134528c error: '' '401': description: 401 - Unauthorized content: application/json: schema: description: Unauthorized response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 401-01 message: Unauthorized description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '403': description: 403 - Forbidden content: application/json: schema: description: Forbidden response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 403-01 message: Forbidden Response description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '404': description: 404 - Not Found content: application/json: schema: description: Not Found response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 404-01 message: Not Found description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '409': description: 409 - Conflict content: application/json: schema: description: Conflict response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 409-01 message: Conflict description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '413': description: 413 - Request Entity Too Large content: application/json: schema: description: Request Entity Too Large response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 413-01 message: Request Entity Too Large description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '422': description: 422 - Unprocessable Entity content: application/json: schema: description: Unprocessable Entity response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 422-01 message: Unprocessable Entity description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '429': description: 429 - Too Many Requests content: application/json: schema: description: Too Many Requests response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 429-01 message: Too Many Requests description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '503': description: 503 - Service Unavailable content: application/json: schema: description: Service Unavailable response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 503-01 message: Service Unavailable description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message default: description: 500 - Internal Server Error content: application/json: schema: description: Default error response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 500-01 message: Internal server error description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message components: securitySchemes: API-ID: type: apiKey in: header name: asapp-api-id API-Secret: type: apiKey in: header name: asapp-api-secret ```` --- # Source: https://docs.asapp.com/apis/metadata/add-multiple-conversation-metadata.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Add multiple conversation metadata > Add multiple issue/conversation metadata items; submit items in a batch in one request ## OpenAPI ````yaml api-specs/metadata-ingestion.yaml post /metadata-ingestion/v1/many-convo-metadata openapi: 3.0.1 info: title: Metadata Ingestion API description: > The Metadata Ingestion API is a mechanism to submit attributes about a single entity or multiple entities to ASAPP. Supported entities to which attributes can be appended include customers, agents, and conversations. version: 1.0.0 servers: - url: https://api.sandbox.asapp.com security: - API-ID: [] API-Secret: [] tags: - name: Metadata description: API to submit entity's attributes to ASAPP paths: /metadata-ingestion/v1/many-convo-metadata: post: tags: - Metadata summary: Add multiple conversation metadata description: > Add multiple issue/conversation metadata items; submit items in a batch in one request operationId: manyConversationMetadata requestBody: required: true content: application/json: schema: description: > A request to send more than one conversation metadata attributes; send a list of items type: object properties: items: type: array items: description: A set of conversation metadata attributes type: object properties: externalConversationId: description: Conversation ID from the external chat / voice system type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 example: issue1389 eventId: description: > An event id used to track the submission; if none is provided, service will generate one type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: eventId-1388 lobId: description: The line of business id type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: '1038' lobName: description: The descriptive name of the line of business type: string maxLength: 256 nullable: true example: manufacturing groupId: description: The group id of which the agent belong to type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: group59 groupName: description: The descriptive name of the group type: string maxLength: 256 nullable: true example: groupXYZ agentRoutingCode: description: The agent's routing attribute type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: route-13988 campaign: description: The activities related to the issue type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: campaign-A deviceType: description: The client's device type type: string enum: - TABLET - PHONE - DESKTOP - WATCH - OTHER nullable: true example: TABLET platform: description: | The client's platform type WAB: WhatsApp Business type: string enum: - SMS - WEB - IOS - ANDROID - APP - LOCAL - VOICE - VOICE_IOS - VOICE_ANDROID - VOICE_ECHO - VOICE_HOMEPOD - VOICE_GGLHOME - VOICE_WEB - APPLEBIZ - GOOGLEBIZ - GBM - WAB nullable: true example: IOS companySegment: description: The company's segment of which the issue belongs to type: array items: type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 64 nullable: true example: - Sales - Marketing companySubdivision: description: >- The company's subdivision of which the issue belongs to type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: Operating businessRule: description: The business rule to use type: string maxLength: 256 nullable: true example: Apply customer's discount entryType: description: The way the issue started and created in the system type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: reactive operatingSystem: description: The operating system used to enter the issue type: string enum: - MAC_OS - LINUX - WINDOWS - ANDROID - IOS - OTHER nullable: true example: MAC_OS browserType: description: The browser type used type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 64 nullable: true example: Safari browserVersion: description: The browser version used type: string pattern: '[a-zA-Z0-9\-\_\.]+' maxLength: 16 nullable: true example: 14.1.2 attributes: description: A map of key-value pairs for extra metadata attributes type: array items: description: A key-value pair of additional metadata attributes type: object properties: name: description: The name of the attribute type: string maxLength: 256 value: description: The value of the named attribute type: string maxLength: 1024 example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value maxItems: 10 nullable: true example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value required: - externalConversationId example: externalConversationId: id-1389 eventId: eventId-1388 lobId: '1038' lobName: manufacturing groupId: group59 groupName: groupXYZ agentRoutingCode: route-13988 campaign: campaign-A deviceType: TABLET platform: IOS companySegment: - Sales - Marketing companySubdivision: operating businessRule: Apply customer's discount entryType: reactive operatingSystem: MAC_OS browserType: Safari browserVersion: 14.1.2 attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value minItems: 1 maxItems: 1000 example: items: - externalConversationId: id-1389 eventId: eventId-1388 lobId: '1038' lobName: manufacturing groupId: group59 groupName: groupXYZ agentRoutingCode: route-13988 campaign: campaign-A deviceType: TABLET platform: IOS companySegment: - Sales - Marketing companySubdivision: operating businessRule: Apply customer's discount entryType: reactive operatingSystem: MAC_OS browserType: Safari browserVersion: 14.1.2 attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value - externlConversationId: issue1390 eventId: eventId-1268 lobId: '930' lobName: retail groupId: store-93 groupName: PlazaA agentRoutingCode: route-1983 campaign: campaign-B deviceType: PHONE platform: ANDROID companySegment: - SALES - FINANCE companySubdivision: operating businessRule: Apply customer's discount entryType: proactive operatingSystem: ANDROID browserType: Chrome browserVersion: 103.0.5060.128 attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value responses: '200': description: > 200 - Success | Partial Success Submit a batch of items to the service to be ingested. Record can be traced back to the submitted record by the eventId. If any of the records encounter issue during the ingestion, a message sent status will be returned with an error message for each record. A 200 success is returned as long as there is one item ingested successfully, i.e., "partial success". content: application/json: schema: type: object properties: errorCount: description: Number of message sent with error(s) type: integer results: description: A list of send result type: array items: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - errorCount - results example: errorCount: 1 results: - eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' - eventId: fcf99667-feaf-11ec-a42e-11799134528c error: '' '400': description: > 400 - Bad request Submit a batch of items to the service to be ingested. Record can be traced back to the submitted record by the eventId. If any of the records encounter issue during the ingestion, a message sent status will be returned with an error message for each record. All items in the batch encountered client input validation failures. content: application/json: schema: type: object properties: errorCount: description: Number of message sent with error(s) type: integer results: description: A list of send result type: array items: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - errorCount - results example: errorCount: 1 results: - eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' - eventId: fcf99667-feaf-11ec-a42e-11799134528c error: '' '401': description: 401 - Unauthorized content: application/json: schema: description: Unauthorized response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 401-01 message: Unauthorized description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '403': description: 403 - Forbidden content: application/json: schema: description: Forbidden response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 403-01 message: Forbidden Response description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '404': description: 404 - Not Found content: application/json: schema: description: Not Found response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 404-01 message: Not Found description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '409': description: 409 - Conflict content: application/json: schema: description: Conflict response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 409-01 message: Conflict description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '413': description: 413 - Request Entity Too Large content: application/json: schema: description: Request Entity Too Large response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 413-01 message: Request Entity Too Large description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '422': description: 422 - Unprocessable Entity content: application/json: schema: description: Unprocessable Entity response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 422-01 message: Unprocessable Entity description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '429': description: 429 - Too Many Requests content: application/json: schema: description: Too Many Requests response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 429-01 message: Too Many Requests description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '503': description: 503 - Service Unavailable content: application/json: schema: description: Service Unavailable response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 503-01 message: Service Unavailable description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message default: description: 500 - Internal Server Error content: application/json: schema: description: Default error response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 500-01 message: Internal server error description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message components: securitySchemes: API-ID: type: apiKey in: header name: asapp-api-id API-Secret: type: apiKey in: header name: asapp-api-secret ```` --- # Source: https://docs.asapp.com/apis/metadata/add-multiple-customer-metadata.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Add multiple customer metadata > Add multiple customer metadata items; submit items in a batch in one request ## OpenAPI ````yaml api-specs/metadata-ingestion.yaml post /metadata-ingestion/v1/many-customer-metadata openapi: 3.0.1 info: title: Metadata Ingestion API description: > The Metadata Ingestion API is a mechanism to submit attributes about a single entity or multiple entities to ASAPP. Supported entities to which attributes can be appended include customers, agents, and conversations. version: 1.0.0 servers: - url: https://api.sandbox.asapp.com security: - API-ID: [] API-Secret: [] tags: - name: Metadata description: API to submit entity's attributes to ASAPP paths: /metadata-ingestion/v1/many-customer-metadata: post: tags: - Metadata summary: Add multiple customer metadata description: > Add multiple customer metadata items; submit items in a batch in one request operationId: manyCustomerMetadata requestBody: required: true content: application/json: schema: description: >- A request to send more than one customer metadata; send a list of items type: object properties: items: type: array items: description: A set of customer metadata attributes type: object properties: externalConversationId: description: Conversation ID from the external chat / voice system type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 example: issue509 externalCustomerId: description: >- The customer id involved in respect to the issue in question type: string pattern: '[a-zA-Z0-9\-\_\.\@]+' maxLength: 256 example: 555.555.0100-jdoe@example.com eventId: description: > An event id used to track the submission; if none is provided, service will generate one type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: eventId-1938 status: description: >- The descriptive label to describe the customer's status and/or type type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: new phoneNumber: description: The customer's phone number type: string pattern: '[0-9\-\.\(\)\+]+' maxLength: 32 nullable: true example: (555)555-0100 emailAddress: description: The customer's email address type: string format: email nullable: true example: jdoe@example.com userId: description: The customer's user Id type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 256 nullable: true example: user908038 addressCountry: description: The country portion of the customer's address type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 128 nullable: true example: United-States addressState: description: The state portion of the customer's address type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 128 nullable: true example: New-York addressZipcode: description: >- The zipcode/postal code portion of the customer's address type: string pattern: '[a-zA-Z0-9\-\_]+' maxLength: 16 nullable: true example: '10001' attributes: description: A map of key-value pairs for extra metadata attributes type: array items: description: A key-value pair of additional metadata attributes type: object properties: name: description: The name of the attribute type: string maxLength: 256 value: description: The value of the named attribute type: string maxLength: 1024 example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value maxItems: 10 nullable: true example: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value required: - externalConversationId - externalCustomerId example: externalConversationId: id-509 externalCustomerId: 555.555.0100-jdoe@example.com eventId: eventId-1938 status: new phoneNumber: (555)555-0100 emailAddress: jdoe@example.com userId: user908038 addressCountry: United-States addressState: New-York addressZipcode: '10001' attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value minItems: 1 maxItems: 1000 example: items: - externalConversationId: id-509 externalCustomerId: 555.555.0100-jdoe@example.com eventId: eventId-1938 status: new phoneNumber: (555)555-0100 emailAddress: jdoe@example.com userId: user908038 addressCountry: United-States addressState: New-York addressZipcode: '10001' attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value - externalConversationId: id-203 externalCustomerId: 555.555.0101-mdoe@example.com eventId: eventId-1331 status: existing phoneNumber: (555)555-0101 emailAddress: mdoe@example.com userId: user3201033 addressCountry: United-States addressState: New-York addressZipcode: '10002' attributes: - name: attr1_name value: attr1_value - name: attr2_name value: attr2_value - externalConversationId: id-69221 externalCustomerId: 555.555.0191 attributes: null - externalConversationId: id-69223 externalCustomerId: 555.555.0193 - externalConversationId: id-69229 externalCustomerId: zdoe@example.com phoneNumber: null userId: null addressCountry: null responses: '200': description: > 200 - Success | Partial Success Submit a batch of items to the service to be ingested. Record can be traced back to the submitted record by the eventId. If any of the records encounter issue during the ingestion, a message sent status will be returned with an error message for each record. A 200 success is returned as long as there is one item ingested successfully, i.e., "partial success". content: application/json: schema: type: object properties: errorCount: description: Number of message sent with error(s) type: integer results: description: A list of send result type: array items: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - errorCount - results example: errorCount: 1 results: - eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' - eventId: fcf99667-feaf-11ec-a42e-11799134528c error: '' '400': description: > 400 - Bad request Submit a batch of items to the service to be ingested. Record can be traced back to the submitted record by the eventId. If any of the records encounter issue during the ingestion, a message sent status will be returned with an error message for each record. All items in the batch encountered client input validation failures. content: application/json: schema: type: object properties: errorCount: description: Number of message sent with error(s) type: integer results: description: A list of send result type: array items: description: A response with the status of a sent message type: object properties: eventId: description: >- An UUID identifier string computed for the submitted event message type: string example: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: description: >- Status of the failed message if value is not blank; the error is contained in the string type: string example: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' example: eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' required: - errorCount - results example: errorCount: 1 results: - eventId: 5484e507-feaf-11ec-bfc1-fda566fa9333 error: 'FAIL_BAD_PARAMS: ERROR: agent id cannot be blank' - eventId: fcf99667-feaf-11ec-a42e-11799134528c error: '' '401': description: 401 - Unauthorized content: application/json: schema: description: Unauthorized response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 401-01 message: Unauthorized description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '403': description: 403 - Forbidden content: application/json: schema: description: Forbidden response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 403-01 message: Forbidden Response description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '404': description: 404 - Not Found content: application/json: schema: description: Not Found response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 404-01 message: Not Found description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '409': description: 409 - Conflict content: application/json: schema: description: Conflict response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 409-01 message: Conflict description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '413': description: 413 - Request Entity Too Large content: application/json: schema: description: Request Entity Too Large response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 413-01 message: Request Entity Too Large description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '422': description: 422 - Unprocessable Entity content: application/json: schema: description: Unprocessable Entity response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 422-01 message: Unprocessable Entity description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '429': description: 429 - Too Many Requests content: application/json: schema: description: Too Many Requests response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 429-01 message: Too Many Requests description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '503': description: 503 - Service Unavailable content: application/json: schema: description: Service Unavailable response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 503-01 message: Service Unavailable description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message default: description: 500 - Internal Server Error content: application/json: schema: description: Default error response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 500-01 message: Internal server error description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message components: securitySchemes: API-ID: type: apiKey in: header name: asapp-api-id API-Secret: type: apiKey in: header name: asapp-api-secret ```` --- # Source: https://docs.asapp.com/generativeagent/configuring/connecting-your-knowledge-base/add-via-api.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Add via API > Learn how to add Knowledge Base articles programmatically using the API The Knowledge Base Article Submission API offers an alternative to manual creation of article snippets and URL imports. This is especially beneficial for large data sources that are not easily scraped, such as internal knowledge bases or articles within a Content Management System. All content imported via API follows the [Imported Articles](/generativeagent/configuring/connecting-your-knowledge-base#imported-articles) review process. ## Before you Begin Before using the Knowledge Base Article Submission API, you need to: * [Get your API Key Id and Secret](/getting-started/developers#access-api-credentials) * Ensure your API key has been configured to access Knowledge Base APIs. Reach out to your ASAPP team if you need access enabled. ## Step 1: Create a submission To import an article via API, you need to create a `submission`. A **submission** is the attempt to import an article. It will still need to be reviewed and published like any other imported article. To [create a submission](/apis/knowledge-base/create-a-submission), you need to specify: * `title`: The title of the article * `content`: The content of the article There are additional optional fields that can be used to improve the articles such as `url`, `metadata`, and `queryExamples`. More information can be found in the [API Reference](/apis/knowledge-base/create-a-submission). As an example, here's a request to create a submission for an article including additional values such as `url` and `metadata`: ```json theme={null} curl --request POST \ --url https://api.sandbox.asapp.com/knowledge-base/v1/submissions \ --header 'Content-Type: application/json' \ --header 'asapp-api-id: ' \ --header 'asapp-api-secret: ' \ --data '{ "title": "5G Data Plan", "content": "Our 5G data plans offer lightning-fast speeds and generous data allowances. The Basic 5G plan includes 50GB of data per month, while our Unlimited 5G plan offers truly unlimited data with no speed caps. Both plans include unlimited calls and texts within the country. International roaming can be added for an additional fee.", "url": "https://example.com/5g-data-plans", "metadata": [ { "key": "department", "value": "Customer experience" } ], "queryExamples": [ "What 5G plans do you offer?", "Is there an unlimited 5G plan?" ], "additionalInstructions": [ { "clarificationInstruction": "Emphasize that 5G coverage may vary by location", "exampleResponse": "Our 5G plans offer great speeds and data allowances, but please note that 5G coverage may vary depending on your location. You can check coverage in your area on our website." } ] }' ``` ## Step 2: Article Processing The Article Submission API submits the article that will still need review and publication like any other imported article. You can check the status of the submission by calling the [Get a Submission](/apis/knowledge-base/retrieve-a-submission) API. The response will include the `id` of the submission and the `status` of the submission. ```json theme={null} { "id": "fddd060c-22d7-4aed-acae-8f8dcc093a88", "articleId": "8f8dcc09-22d7-4aed-acae-fddd060c3a88", "submittedAt": "2024-12-12T00:00:00", "title": "5G Data Plan", "content": "Our 5G data plans offer lightning-fast speeds and generous data allowances...", "status": "PENDING_REVIEW" } ``` ## Step 3: Publication and Updates Once you approve the submission, the system will publish the article and make it available in the Knowledge Base. The status of the submission will update to `ACCEPTED` and you will see it within the ASAPP AI-Console UI. You can also update the article after the system has published it by creating another submission with the same `articleId`. ## Troubleshooting Common API response codes and their solutions: If you receive a `500` code, there is an issue with the server. Wait and try again. If the error persists, contact your ASAPP Team. The `400` code usually means missing required parameters. Recheck your request body and try again. A `401` code indicates incorrect credentials or unconfigured ASAPP credentials. The request body is too large. Article content is limited to 200,000 Unicode characters. Try again with less content. ## Next Steps View the Knowledge Base API documentation Learn more about managing your Knowledge Base articles Configure how GenerativeAgent uses your Knowledge Base Deploy your Knowledge Base to production --- # Source: https://docs.asapp.com/generativeagent/build/adding-a-use-case.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Adding a use case to GenerativeAgent > Learn how to add new use cases to GenerativeAgent by creating tasks and functions Adding a use case to GenerativeAgent involves creating a **Task** that represents the business scenario you want your agent to handle, along with the **Functions** that enable it to perform the necessary actions. Tasks represent use cases - they define what GenerativeAgent can accomplish for your customers. Functions are the tools that enable those tasks by connecting to your backend systems. ## Step 1: Define Your Use Case Start by clearly defining the business scenario you want GenerativeAgent to handle: * **Customer goal**: What does the customer want to accomplish? * **Business context**: What type of issue or request is this? * **Success criteria**: How do you know when the task is complete? * **Required actions**: What backend operations does the task need? **Customer goal**: "I want to check where my order is" **Business context**: Customer service inquiry about order tracking **Success criteria**: Customer receives current order status and tracking information **Required actions**: Look up order details, retrieve tracking information, provide status update **Customer goal**: "I need to book a doctor's appointment" **Business context**: Healthcare appointment booking **Success criteria**: Customer has a confirmed appointment with details **Required actions**: Check availability, book appointment, send confirmation ## Step 2: Create the Task Navigate to the Tasks page and create a new task that represents your use case: Go to the Tasks page in your GenerativeAgent configuration. Click "Create task" to start creating your task. Provide the following information: * **Task name**: Clear, descriptive name for your use case * **Task selector description**: How GenerativeAgent identifies when to use this task * **Task message** (optional): Initial response when this task is selected * **Channels**: Which channel(s) this task will support GenerativeAgent Task creation interface **This is the most critical part of creating a successful use case.** Your task instructions determine how GenerativeAgent behaves and whether it handles your use case correctly. In the task configuration, provide: * **Procedures**: Detailed guidance on how to handle this use case * **Voice settings**: Policies and communication guidelines that are specific to the Voice channel * **Chat settings**: Policies and communication guidelines that are specific to the Chat channel When writing your procedures, reference the functions you'll need for this task. You'll create these functions in the next step and connect them back to this task. Effective task instructions should: * **Be specific and actionable**: Tell GenerativeAgent exactly what to do in each scenario * **Include examples**: Provide common customer requests and expected responses * **Plan for edge cases**: Define what to do when things go wrong * **Set clear boundaries**: Specify when to escalate to human agents **Need help writing effective instructions?** See our comprehensive guides: * [Task Best Practices](/generativeagent/configuring/task-best-practices) - Complete guide to writing effective task instructions * [Improving Tasks](/generativeagent/configuring/tasks-and-functions/improving) - Resources and tools for optimizing task performance Specify knowledge base metadata to restrict GenerativeAgent to using only articles with matching metadata for this specific use case. This helps ensure GenerativeAgent uses the most relevant information for each specific use case, improving accuracy and reducing irrelevant responses. If you followed the [Build your first GenerativeAgent](/generativeagent/getting-started) guide, you already have a Knowledge Base imported. Otherwise you can [connect your knowledge base](/generativeagent/configuring/connecting-your-knowledge-base) now. ## Step 3: Create Required Functions Functions enable GenerativeAgent to perform actions similar to a live agent. Based on the procedures you defined in your task instructions, create the functions needed to enable those actions. ### Available Function Types Connect to your existing APIs to fetch data or perform actions. The most common function type for integrating with backend systems. Define ideal API interactions before connecting to real systems. Perfect for testing and development. Store conversation data as reference variables for future use. Useful for tracking customer information across the conversation. Signal that control should be transferred to an external system or end the conversation with relevant data. ### Creating Functions Go to the Functions page in your GenerativeAgent configuration. Click "Create Function" to start defining your function. Provide the following information: * **Function name**: Clear, descriptive name for the function * **Description**: How GenerativeAgent should use this function * **API Connection**: The backend system this function connects to Select the appropriate function type based on your use case needs: For functions that need to interact with your live backend systems. 1. Select an existing [API connection](/generativeagent/configuring/connect-apis) 2. Choose the API version if the system offers multiple versions 3. Save the function GenerativeAgent will call the real API during customer interactions. For testing or when you want to define the ideal API interaction first. 1. Click "Integrate later" 2. Define request parameters in JSON schema format 3. Save the function You can replace the Mock call with a real API connection at any time. For storing conversation data as reference variables. 1. Select "Set variable" function type 2. Define the input GenerativeAgent should use 3. Add the variables you want to set 4. Save the function Useful for tracking customer information across the conversation. For signaling control transfer or conversation ending. 1. Select "System transfer" function type 2. Define the input GenerativeAgent should use 3. Optionally add variables to pass along 4. Save the function Helpful for ending conversations or handing control back to external systems. ## Step 4: Connect Functions to Your Task Once you've created the necessary functions, connect them to your task: 1. Return to your task configuration 2. Select the functions this task should use 3. Ensure the functions align with the actions your use case requires 4. Test the task with the Previewer to verify everything works correctly ## Step 5: Test Your Use Case Use the [Previewer](/generativeagent/configuring/previewer) tool to test your new use case: Navigate to the [Previewer](/generativeagent/configuring/previewer) in your GenerativeAgent configuration. Create test conversations that represent how customers would interact with your use case. Use [Test Scenarios](/generativeagent/configuring/tasks-and-functions/test-scenarios) to define customer profiles and test different edge cases. Ensure the system calls all functions correctly and they return expected results. Make adjustments to task instructions or function configurations based on test results. ## Next Steps Use the Previewer to test your new use case with realistic scenarios. Learn how to connect your knowledge base for better context and responses. Explore integration options for connecting GenerativeAgent to your existing systems. Learn how to deploy your configured GenerativeAgent to production. --- # Source: https://docs.asapp.com/agent-desk/digital-agent-desk/agent-desk-navigation.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Digital Agent Desk Navigation > Overview of the Digital Agent Desk navigation and features. ## App Overview 1. [Main Navigation](#main-navigation) 2. [Conversation](#conversation) 3. [Agent Solutions](#agent-solutions) ## Main Navigation ### A. Agent Stats | **Feature** | **Feature Overview** | **Configurability** | | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------ | | Agent Stats | Basic statistics related to chats handled since the agent last logged into Agent Desk (Current Session) or to all chats handled in Agent Desk (All Time). | Core | ### B. Navigation | **Feature** | **Feature Overview** | **Configurability** | | :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------ | | Concurrency Slots | The agent can see their concurrent chats and available 'Open Slots' directly in Agent Desk. | Configurable | | Waiting Timers | A timer displays when either the customer is waiting or the agent is waiting. The customer waiting time appears in larger text with a badge around it | Core | | Last Message Preview | Preview of the last message a customer sent in chat. | Core | | Color Coded Chat Cards | Unique color assigned to each chat card to help distinguish chats. | Core | | Copy Tool | Hover-over tool to easily copy entities across Agent Desk. | Core | ### C. Help & Resources | Feature | Feature Overview | Configurability | | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------- | | Agent Feedback | Text form for agent to send feedback to ASAPP team (available by default; can be disabled if an agent has an active chat, if an agent is in an available status, or in both instances). | Configurable | | Keyboard Shortcuts | List of Keyboard Shortcuts. **Ctrl +S** | Core | | Patent Notice | List of Patents. | Core | ### D. Preferences | Feature | Feature Overview | Configurability | | :---------------- | :----------------------------------------------------- | :-------------- | | Font Size | Select the Font Size: **Small**, **Medium**, **Large** | Core | | Color Temperature | Adjust the display to reduce eye strain. | Core | ### E. Status Switcher & Log Out | **Feature** | **Feature Overview** | **Configurability** | | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------- | :------------------ | | Agent Status | Configurable list of Agent statuses: **Active**, **After Chat Wrap-Up**, **Coaching**, **Lunch/Break**, **Team Meeting**, **Training**. | Configurable | | Go to Admin | Opens the Admin Dashboard in another tab. | Core | | Log Out | Logs out of Digital Agent Desk | Core | ## 2. Conversation Navigation ### A. Status | **Feature** | **Feature Overview** | **Configurability** | | :---------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------ | | Active/Away Status | Configurable list of 'Away' statuses (instead of binary option 'Active' / 'Away'). | Configurable | | Auto Log Out Inactivity and After X Hours | If an agent does not move their mouse for over X hours, auto-log them out of Agent Desk.

If an agent is logged in for more than X hours, even if they are active, log them out (unless they are in an active chat with a customer). | Configurable | ### B. Navigation | **Feature** | **Feature Overview** | **Configurability** | | :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------ | | Waiting Timers | A timer displays when either the customer is waiting or the agent is waiting.

The customer waiting time appears in larger text with a badge around it. | Core | | Last Message Preview | Preview of the last message a customer sent in chat. | Core | | Color Coded Chat Cards | Unique color assigned to each chat card to help distinguish chats. | Core | | Copy Tool | Hover-over tool to easily copy entities across Agent Desk. | Core | ## 3. Conversation ### A. Conversation Header | **Feature** | **Feature Overview** | **Configurability** | | :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------ | | Chat Duration | Indication of how long the customer has been chatting and waiting, at the top of the conversation panel. | Core | | **Contextual Actions (From Left to Right)** | | | | Quick Notes | Enables an agent to type and save notes during a conversation that will save in Conversation History | Configurable | | Secure Messaging | Enables an agent to send an invite to customers to share sensitive information (e.g. credit card number) securely. | Configurable | | Send to Flow | Expose **Send Flow** buttons in the center panel drop-down menu that allow an agent to send the customer back to SRS and into a particular automated flow. | Configurable | | Autopilot Forms / Quick Send | Configurable forms and flows to send to customer and remain connected. You can configure deep links and single step flows. | Configurable | | Co-Browsing | Enables an agent to send an invitation to a customer to share their screen. The agent has limited capabilities (can scroll, draw, and focus, but can't click or type). | Configurable | | **End Controls** | | | | Autopilot Timeout (APTO) | Allows an agent to initiate an autopilot flow that checks in and eventually times out an unresponsive customer; timeout suggestions can appear after an initial conversation turn with a live agent | Configurable | | Timeout | Enables the agent to timeout a customer. | Core | | Transfer | Enables the agent to transfer a customer to another queue or individual agent. Queues are only available for transfer if business hours are open, the queue is not paused, and at least one agent in the queue is online. If needed, specific queues can be excluded from the transfer menu. | Configurable | | End Chat | Enables the agent to close an issue. | Core | | Auto Transfer on Agent Disconnect | If agents disconnect from Agent Desk for over 60 seconds, ASAPP will auto transfer any currently assigned issues to another agent. | Core | | Auto Requeue if Agent is unresponsive | When a chat is first connected to an agent, give them X seconds to send their first message. If they exceed this timer, auto-reassign the issue to the next available agent. | Configurable | ### B. Conversation | **Feature** | **Feature Overview** | **Configurability** | | :--------------- | :---------------------------------------------------------------------------------------------- | :------------------ | | Chat Log | Enables scrolling through the customer's previous conversation history. | Core | | Message Previews | Enables viewing a preview of what the customer is typing before the customer sends the message. | Core | ### C. Composer | **Feature** | **Feature Overview** | **Configurability** | | :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------ | | Autosuggest | Suggested responses before the agent begins typing based on conversational context. | Core | | Autocomplete | Suggested responses after the agent begins typing based on conversational context. | Core | | Fluency boosting | If an agent makes a known spelling error while typing and hits the space bar, ASAPP will auto-correct the spelling mistake. The correction is indicated by a blue underline, and the agent may click on the word to undo the correction. | Core | | Profanity handling | Generic list of phrases ASAPP disables agents from sending to customers. | Core | ## 4. Agent Solutions ### Customer Information | **Feature** | **Feature Overview** | **Configurability** | | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------ | | Customer Profile (A) | Displays customer, company, and specific account information for authenticated customers. | Configurable | | Customer History (B) | A separate tab that gives a quick snapshot of each current and historical interaction with the customer, including time, duration, notes, intent, etc. | Core | | Copy Tool (C) | Hover-over tool to easily copy entities across Agent Desk. | Core | ### Knowledge Base | **Feature** | **Feature Overview** | **Configurability** | | :------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- | | [Knowledge Base](/agent-desk/digital-agent-desk/knowledge-base) (A) | Agents can traverse a folder hierarchy of customer company specific content to search, add a favorite, and send content to customers. Select **Favorites** or **All Files**. | Requires you to upload and maintain Knowledge Base content via Admin or an integration. | | List of Favorites or All Files (B) | Displays your Favorites or All Files. | Configurable | | Knowledge Base Suggestions (C) | Suggests Knowledge Base articles to agents. | Core | | Contextual Actions (D) | Agents can attach an article (send to a customer) or make it a favorite. | Configurable | ### Responses

Feature

Feature Overview

Configurability

Custom Responses (A)

Agents can create, edit, search, and view custom responses in Agent Desk. Agent Desk uses these custom responses in Auto Suggest. Click + to create new custom responses. To edit, hover over a response and select Edit. Click the Search icon to search custom responses.

If an agent sends something that isn't in their custom library or the global whitelist, ASAPP recommends it back to them from a growing list of their favorites.

Core

Global Responses

(A)

Agents can search, view, and click-to-insert responses from the global whitelist. Click the Search icon to search the global responses.

Core

Navigate Folders (B)

In both the custom and global response libraries, agents can navigate into and out of folders.

Core

Uncategorized Custom Responses (C)

Single custom responses that you add but do not categorize into a specific folder display here.

Core

Click-to-Insert (D)

In both the custom and global response libraries, agents can hover over a response and click Insert to insert the full text of the selected response into the typing field.

Core

Chat Takeover

Managers can takeover an agent's chat.

Core

Receive attachments

End customers can send pdf attachments to agents in order to provide more information about their case.

Core

### Chat Takeover Administrators (managers or supervisors) can take over chats from agents or unassigned chats in the queue. This feature is useful for: * Closing resolved chats that need disposition * Handling complex or convoluted conversations * Managing queue traffic during high-volume periods To take over a chat: 1. Navigate to the conversation in Live Insights 2. Open the transcript area 3. Click the Takeover button in the upper left-hand corner 4. Confirm the takeover action Once transferred, administrators can continue the chat through Agent Desk. Access to this functionality requires appropriate permissions set up by ASAPP. ### Wrap-Up | **Feature** | **Feature Overview** | **Configurability** | | :----------------------- | :---------------------------------------------------------------- | :------------------ | | Chat Notes (A) | Agents can leave notes during a chat and at the end of a chat. | Core | | End Chat Disposition (C) | Ask the customer if the initial intent was correct. | Core | | End Chat Resolution (D) | Agents can indicate if an issue is resolved or not while closing. | Core | ### Receiving Attachments Agents can ask for and receive PDF and image attachments from end customers. This feature is particularly useful for scenarios like fraud cases where agents need proof of transactions. When a customer sends an attachment, the agent will receive a notification in the chat. Images can be viewed in a modal while PDFs can be downloaded for the agent to view within their own desktop environment. * JPEG * JPG * PNG * PDF Images: Maximum 10MB PDFs: Maximum 20MB Apple Messages for Business ### Undelivered Messages If the live agent fails to send a message to the customer, the agent will see an undelivered message indicator near the transcript. Message delivery issues impact customer experience, agent efficiency, and operational clarity. With this feature: * Agents gain clarity into whether a customer actually received the message they sent, reducing unnecessary repetition. * Admins and supervisors gain visibility into reliability issues that previously went undetected, enabling quicker diagnosis and resolution. * Quality Assurance and Compliance teams benefit from transcripts that accurately reflect what the customer saw. * CSMs and Delivery teams gain insights to help customers troubleshoot delivery issues and validate expected outcomes. This feature strengthens trust in the CXP transcript as an accurate record and improves the overall reliability of customer-facing communication flows. When a message fails to deliver, the following occurs: 1. When a message fails to deliver to a customer, the transcript displays a **"Failed to send"** indicator directly below the undelivered message. 2. The indicator shows that message delivery failed and displays an additional banner stating "Messaging service is unavailable". 3. Agents immediately see this status when viewing the transcript during customer interactions. 4. Admins and supervisors see the same delivery failure status in conversation history and can use this information for quality assurance and review. 5. The feature automatically applies to all customers without requiring any action from end users. Undelivered Messages Interface --- # Source: https://docs.asapp.com/agent-desk.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Agent Desk > Use the Agent Desk to empower agents to deliver fast and exceptional customer service. Agent Desk is an end-to-end AI-native® messaging platform designed for digital customer service. It enhances digital adoption, maintains customer satisfaction (CSAT), and increases contact center capacity efficiently. At its core, Agent Desk uses an AI-Native design approach. AI is not just an added feature, but the foundation for building the entire platform. Agent Desk leverages advanced machine learning algorithms and generative AI to provide comprehensive support for digital customer service. This holistic approach benefits agents, leaders, and customers alike, offering a seamless and intelligent messaging experience across various channels. ### Supported Channels Agent Desk supports [multiple messaging channels](/agent-desk/integrations), including: * [Android SDK](/agent-desk/integrations/android-sdk "Android SDK") * [Apple Messages for Business](/agent-desk/integrations/apple-messages-for-business "Apple Messages for Business") * [iOS SDK](/agent-desk/integrations/ios-sdk "iOS SDK") * [Voice](/agent-desk/integrations/voice "Voice") * [Web SDK](/agent-desk/integrations/web-sdk "Web SDK") * [WhatsApp Business](/agent-desk/integrations/whatsapp-business "WhatsApp Business") ## How it works Agent Desk seamlessly integrates with your existing channels, creating a unified ecosystem for customer interactions and agent support. Here's how it enhances the experience for all stakeholders: **For your customers**: * Seamlessly connect with your [preferred messaging channels](#implement-messaging-platform) for a consistent brand experience. * Benefit from intelligent automation with [**Virtual Agent**](#virtual-agent). **For your agents**: * Leverage the powerful [**Digital Agent Desk**](#digital-agent-desk). * Boost productivity with built-in AI-powered tools like **AI Summary** and **AI Compose**. **For your management team**: * Gain valuable insights with [**Insights Manager**](#insights-manager) By seamlessly blending AI capabilities with human expertise, Agent Desk elevates your customer service operations to new heights of efficiency and satisfaction. ### Virtual Agent Virtual Agent is our cutting-edge automation solution that enables organizations to: * Recognize intent intelligently and route seamlessly * Automate common customer inquiries with natural language * Handle dynamic input and secure forms * Customize workflows tailored to your brand's unique requirements Learn more about Virtual Agent ### Digital Agent Desk Digital Agent Desk is our AI-enhanced app that empowers agents to deliver exceptional customer service via messaging: * Send and receive messages across multiple channels * Manage concurrent conversations with intelligent prioritization * Access interaction history for context-aware support * Use AI tools like AI Compose, Autopilot, and AI Summary for faster Average Handle Time (AHT) * Navigate an intuitive interface with integrated knowledge and customer information Learn more about Digital Agent Desk ### Insights Manager Insights Manager is our powerful analytics tool that optimizes contact center operations: * Identify and respond to customer trends in real time * Monitor contact center activity with intuitive dashboards * Manage conversation volume and agent workload efficiently * Gain insights through performance analysis and reporting * Investigate customer interactions for quality and compliance Insights Manager provides data-driven insights to improve your customer service operations. Learn more about Insights Manager ## Implement Agent Desk To start using Agent Desk, you need to choose the channels your users will engage with, and configure Agent Desk, Virtual Agent, and Insights Manager to meet your needs. Connect ASAPP to your messaging channels. The main application where agents can communicate with customers through chat (message) View feature release announcements for ASAPP Messaging --- # Source: https://docs.asapp.com/agent-desk/insights-manager/live-insights/agent-performance.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Agent Performance > Monitor agent performance in Live Insights. ASAPP provides robust real-time agent performance data. You can monitor: * Agent status * Handle and response time performance * Agent utilization In addition, alerts and signals provide context to better understand how agents are performing. ## How to Access Agent Data You can access agent performance data from the 'Performance' page. 1. **Open agent panel**: To view agent performance data, click the **Agent** icon on the right-side of the screen. The system opens a panel that contains a list of all agents currently logged into the queue. 2. **Close agent panel**: To close the agent panel, click the **close** icon. ## Agent Real-time Performance Data Live Insights automatically updates performance data related to agents in real-time every 15 seconds. ## Search for Agents & Sort Data ASAPP provides tools to organize and find the right content. You can search for a specific agent name or sort the data based on current performance. 1. **Find agents**: To find a specific agent, enter the **agent name** in the search field. The list of agents will filter down to the relevant results. To remove the query, delete the **agent name** from the search field. 2. **Sort agents**: You can use each column in the agent panel to sort content. Default: the system sorts the list by agent name. To sort by a different metric, click the **column name**. To change the sort order, click the **active column name**. ## View Agent Transcripts You can access live agent transcripts from the 'Agent' panel. 1. **Agents with assignments**: The system underlines agents currently taking assignments in the 'Agent' panel. Click an **underlined agent name** to go to the 'Conversation' page to view relevant agent transcripts. 2. **Agent filter applied**: When you view an agent's transcript, the 'Conversation Activity' table displays only their chats. The filter chip displayed above the list of conversations indicates this filtering. To remove the filter, click the **X** icon in the filter chip. --- # Source: https://docs.asapp.com/agent-desk/digital-agent-desk/agent-sso.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Agent SSO > Learn how to use Single Sign-On (SSO) to authenticate agents and admin users to the Digital Agent Desk. ASAPP recommends that customers use SSO to authenticate agents and admin users to our applications. In this scenario: 1. ASAPP acts as the Service Provider (SP) while the customer serves as the Identity Provider (IDP). 2. The customer's authentication system performs user authentication using their existing customer credentials. 3. ASAPP supports Service Provider Initiated SSO. Customers provide the SSO URL to agents and admins. 4. The URL points to the customer's SSO service, which will authenticate the users via their authentication system. 5. Once ASAPP authenticates the user, the customer's SSO service sends a SAML assertion with user information to ASAPP's SSO service. 6. ASAPP uses the information inside the SAML assertion to identify the user and redirect them to the appropriate application. The diagram below illustrates the IDP-initiated SSO flow. ## Configuring Single Sign-On via SAML ### Environments ASAPP supports SSO in non-production and production environments. We strongly recommend that customers configure SSO in both environments. ### Exchange of SAML metadata Both ASAPP and the customer generate their respective SAML metadata and exchange the metadata files. Each environment requires different metadata, so teams must generate metadata once per environment. Sample metadata file content: ```json theme={null} REDACTED REDACTED urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified ``` ### SAML Profile Configuration Next, ASAPP and the customer configure their respective SSO services with each other's SAML profile. Teams can achieve this by importing the SAML metadata into the SSO service (if it supports a metadata import feature). ### SAML Attributes Configuration SAML Attributes are key-value fields within the SAML message (also called SAML assertion) that the Identity Provider (IDP) sends to the Service Provider (SP). ASAPP requires the following fields to be included with the SAML assertion | **Attribute Name** | **Required** | **Description** | **Example** | | | :----------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------ | ------- | | userId | yes | user's unique identifier used for authentication. Can be a unique readable value such as user's email or an opaque identifier such as a customer's internal user ID. | [jdoe@company.com](mailto:jdoe@company.com) | | | firstName | yes | user's first name | John | | | lastName | yes | user's last name | Doe | | | nameAlias | yes | user's display name. Allows an agent, based on their personal preference or company's privacy policy, to set an alias to show to the customers they are chatting with. If this is not sent then the agent firstName will be displayed. | John Doe | | | roles | yes | the roles the user has within the ASAPP platform. Typically mapped to one or more AD Security Groups on the IDP. | representative | manager | The following fields are not **required** but **desired** to further automate the agent Desk configuration: | **Attribute Name** | **Required** | **Description** | **Example** | | | :----------------- | :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | -------- | | groups | no | group(s) the user belongs to. This attribute controls the queue(s) that a user is assigned to. Not to be confused with the AD Security Groups (see the **roles** attribute above) | residential | business | | concurrency | no | number of concurrent chats the user can handle | 5 | | In addition, any custom fields can be configured in the SAML assertion. See the section below for more details. ### Sending User Data via SAML ASAPP uses SAML attribute fields to keep user data current in our system. This also allows us to register new users automatically when they log into the ASAPP application for the first time. In addition to the required fields that ASAPP needs to identify the user, customers can send additional fields in the SAML assertion that can be used for other purposes such as Reporting. An example can be the Agent Location. These fields are specific per customers. The name and possible values of these fields need to be agreed upon and configured prior to the SAML implementation. ### SSO Testing SSO testing between the customer and ASAPP must be a coordinated effort due to the nature of the IDP-initiated SSO flow. The customer must provide several user accounts to be used for testing. Generally, the test scenarios are as follows: 1. An agent logs in for the first time. ASAPP observes that a new user record is created and the agent lands on the correct ASAPP application for their role (Desk for a rep, Admin for supervisor/manager). 2. The same agent logs out and logs back in. The agent observes that the correct application still opens. 3. Repeat the same test for another user account, ideally with different roles. Once testing is completed successfully, then the SSO flow is certified for that environment. Setting up SSO in the Production environment should follow the same steps. --- # Source: https://docs.asapp.com/ai-productivity/ai-compose/ai-compose-tooling-guide.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # AI Compose Tooling Guide > Learn how to use the AI Compose tooling UI ## Overview This page outlines how to manage and configure global response lists for AI Compose in Agent Desk. The global response list is created and maintained by program administrators, and the responses contained within it can be suggested to the full agent population. Suggestions given to agents can also include custom responses created by agents and organic responses, which are a personalized response list of frequently-used responses by each agent. To learn more about AI Compose Features, go to [AI Compose Product Guide](/ai-productivity/ai-compose/product-guide). Agent Desk gives program administrators full control over the global response list. In Agent Desk, click on **AI Compose** and then on **Global Responses** in the sidebar. ## Best Practices The machine learning models powering AI Compose look at the global response list and select the response that is most likely to be said by the agent. To create an effective global response list, take into account the following best practices: 1. We recommend having a global response list containing 1000-5000 responses. * The more global responses, the better. Having responses that cover the full range of common conversational scenarios enables the models to make better selections. * Deploying a small response list that contains only one way of saying each phrase is not recommended. The best practice is to include several ways of saying the same phrase, as that will enable our machine learning models to match each agent's conversational style. * Typically, the list is generated by collecting and curating the most frequent agent messages from historical chats at the beginning of an ASAPP deployment. 2. You should keep responses up-to-date as there are changes to business logic and policies to avoid suggestions with stale information. ## Managing Responses The Global Responses page contains a table where each row represents a response that can be suggested to an agent. There are two ways of managing the global response list: 1. Directly add or edit responses through the AI-Console UI, which provides a simple and intuitive experience. This method is best suited for small volumes of changes. 2. Upload a .csv file containing the entire global response list, doing a bulk edit. This method is best suited for large volumes of changes. The following table describes the elements that can be included with each response: | Field | Description | Required | | :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | | Text | The text field contains the response that can be suggested to an agent. Optionally, the text can include [metadata inserts](#metadata "Metadata") to dynamically embed information into a response. | Yes | | Title | Used to provide short descriptors for responses. If you specify a title, the response will display its title when suggested to an agent. | No | | Metadata filters | Used to determine when a response can appear as a suggestion. Allows responses to be filtered to specific agents based on one or more conditions (e.g., filtering responses to specific queues). | No | | Folder path | Used to organize responses into folder hierarchies. Agents can access and navigate these folders to discover relevant responses. | No | ## Uploading Responses in Bulk The global response list can be updated by uploading a .csv file containing the full response list. The recommended workflow is to first download the most recent response list, make changes, and upload the list back into AI-Console. ### .csv Templates The following instructions provide detailed descriptions of how responses need to be defined when using a .csv file. **Text** The text field should contain the exact response that will be suggested to an agent. Optionally, the text field may contain metadata inserts. To use a metadata insert within a response, type the key of the metadata insert inside curly brackets: > "Hello, my name is \{rep\_name}. How may I assist you today?" To learn more about which metadata inserts are available to use within responses, see [Metadata](#metadata "Metadata"). **Folder path** Responses can be organized within a folder structure. This field can contain a single folder name, or a series of nested folders. If using nested folders, each folder should be separated by the ">" character (e.g. "PARENT FOLDER > CHILD FOLDER"). **Title** The title field enables short descriptions for responses. Titles do not need to be unique. **Metadata filters** You can add metadata filters by specifying conditions using the metadata filter key and metadata filter value columns. Key: The metadata filter key contains the field on which to condition the response. For example, if you want to filter a response to a specific queue, the metadata key should be "queue\_name". Value: The metadata filter value specifies for which values of the metadata key the response will be valid. A single metadata filter key can have multiple values, which should be written as a comma-separated list. For example, if the response should be available to the "general" and "escalation" queues, then the metadata filter value should be "general, escalation". A response can contain multiple conditions. To define multiple conditions, separate each with a new line; use shift+enter in Windows or option+enter in Mac to enter a new line in the same cell. [Click here to download a global responses template file](https://docs-sdk.asapp.com/product_features/global-responses-template.csv). **Getting the "invalid character �" when uploading a response list?** If you are uploading a response list and seeing an error message that a response contains the invalid character �, it is likely caused by using Microsoft Excel to edit the response list, as Excel uses a non-standard encoding mechanism. To fix this issue, select **Save as...** and under **File Format**, select **CSV UTF-8 (Comma delimited) (.csv)**. ## Saving and Deploying Saving changes to the global response list or uploading a new list from a .csv file will create a new version. You can see past versions by selecting **Past Versions** under the vertical ellipses menu. You can easily deploy the global response list into testing or production environments. An indicator at the top of each version indicates the status of the response list: unsaved draft, saved draft, deployed in a testing environment, or deployed in production. ## Metadata The Metadata Dictionary, accessible through the navigation panel, provides an overview of metadata that is available for your organization to use in global responses. There are two types of metadata: * **Metadata inserts** are used within the text of each response as templates that can dynamically insert information. Inserts are defined using curly brackets (e.g. Hello, this is \{rep\_name}, how may I assist you today?). * **Metadata filters** introduce conditions to control in which conversations responses can be suggested. By default, responses without any metadata filters are available as suggestions for the entire agent population. Common patterns for filtering include restricting responses to specific queues or lines of business. The metadata on global responses doesn’t control visibility or access for agents in the Global Responses tab of the Right-Hand Panel. The metadata implementation, will influence when a response is suggested by the model in the AI Compose functionality. ### Metadata Inserts A response that contains a metadata insert is a templated response. When the system suggests a templated response, it shows the response to the agent with the metadata insert filled in. *Adding a templated response in AI-Console* *Templated response being suggested to the agent in AI Compose* If the needed metadata insert (such as customer or agent name) is unavailable for a particular response (e.g. the customer in the conversation is unidentifiable), the response will not be suggested by AI Compose. To view all metadata inserts available to use within a conversation, navigate to **Metadata Dictionary** in the navigation panel. ### Metadata Filters Responses that do not have associated metadata filters will be available to the full agent population. In the metadata dictionary, click on any metadata filter to view details about the filter and all possible values available for it. --- # Source: https://docs.asapp.com/ai-productivity/ai-compose.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # AI Compose ASAPP AI Compose helps agents compose the best response to customers, using machine learning techniques to suggest complete responses, partial sentences, key phrases and spelling fixes in real-time based on both the context of the conversation and past agent behavior. ## Features AI Compose provides the following features: | Feature | Description | | :----------------------- | :------------------------------------------------------------------------------------------------------------------------ | | **Autosuggest** | Provides up to three suggestions that appear in a suggestion drawer above the typing field before the agent begins typing | | **Autocomplete** | Provides up to three suggestions that appear in a suggestion drawer above the typing field after the agent starts typing | | **Phrase autocomplete** | Provides in-line phrase suggestions that appear while an agent is typing | | **Response quicksearch** | Allows in-line search of global and custom responses | | **Fluency correction** | Applies automatic grammar corrections that agents can undo | | **Profanity blocking** | Prevents agents from sending messages containing profanity to customers | | **Custom response list** | Enables management of an individual agent's custom responses in a simple library interface | | **Global response list** | Enables management of global responses in a simple tooling interface | ## How it works AI Compose takes in a live feed of your agents' conversations and then uses our various AI models to return a list of changes or suggested responses based on the state of the conversation and the currently typed message. 1. Provide conversation data via the Conversation API. 2. In your Agent Application, call the AI Compose APIs to retrieve the list of changes or suggested responses. 3. Show the potential changes or responses to your agents for them to incorporate. This streamlines your agents' efficiency while still allowing agents to review changes, ensuring only the highest quality of responses reach your customers. AI Compose has the following technical components: | Component | Description | | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------ | | **Autosuggest model** | LLM that ASAPP retrains with agent usage data | | **Data Storage** | Storage for historical conversations, global response lists, and agent historical feature usage that ASAPP uses for weekly retraining | | **Conversation API**\* | An API for creating and updating conversations and conversation data | ## Get Started Integrate AI Compose into your applications and scale up your agent response rates. ### Integrate AI Compose AI Compose is available both as an integration into leading messaging applications and as an API for custom-built messaging interfaces. For technical instructions on how to implement the service for each approach, refer to the deployment guides below: Learn more on the use of AI Compose API Deploy AI Compose via LivePerson Deploy AI Compose on your Salesforce solution ### Use AI Compose For a functional breakdown and walkthrough of effective use cases and configurations, refer to the guides below: Learn more on the use of AI Compose Check the tooling options for AI Compose ### Feature Releases Visit the feature releases for new additions to AI Compose functionality The system will update Product and Deployment Guides as new features become available in production. ## Enhance AI Compose ASAPP AI Summary is a recommended pairing with AI Compose, generating conversation summaries of key events for 100% of customer interactions. Note-taking and disposition questions take call time and agent focus, both of which can have a negative impact on agent performance. Removing summarization tasks from agents through automation can keep agents focused on messaging with customers and yield higher summary data coverage than manual agent notes. Head to AI Summary Overview to learn more. Learn more about AI Summary on ASAPP.com --- # Source: https://docs.asapp.com/getting-started/setup/ai-console.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # AI Console > Central dashboard for configuring and managing ASAPP products The **AI Console** is ASAPP's central dashboard for configuring, managing, and monitoring your ASAPP products. It provides a unified interface for administrators, developers, and business users to set up and control the full suite of ASAPP's AI-powered solutions. AI Console Home ## Product Configuration AI Console allows you to set up and manage ASAPP products. Product Tiles in AI Console You can configure the following products: * [GenerativeAgent](/generativeagent): Configure Tasks, Functions, Knowledge Bases, and more. * [ASAPP Messaging](/agent-desk): Configure intents, flows, response libraries, and other ASAPP Messaging settings. * [Queues and Routing](/agent-desk/digital-agent-desk/queues-and-routing) * [Virtual Agent](/agent-desk/virtual-agent) * [End Customer IP Blocking](/security/external-ip-blocking) * [AI Compose](/ai-productivity/ai-compose): Configure responses and other settings for AI Compose. * [AI Summary](/ai-productivity/ai-summary): Try out AI Summary within the AI Console. ## Manage Company Resources **Company Resources** are shared entities that multiple ASAPP products use. Company Resources in AI Console Company Resources include: * **API Integration Hub**: Manage [API Connections](/generativeagent/configuring/connect-apis) that connect GenerativeAgent to external systems. This includes: * Managing API Connections, API Specs, and Authentication. * Viewing [API Logs](/generativeagent/configuring/connect-apis#api-connection-logs). * **Entities**: Data fields used for routing, reporting, and personalization * **Integrations**: Data and API Integrations to connect ASAPP Messaging to external systems. * **Intents**: Customer intents recognized by Virtual Agent and other products * **Library**: Build and attach deep links or Forms to use in Flows. ## Administration AI Console is where you administer your ASAPP account. Located in the top right corner of the page. AI Console Administration Within the Administration page, you can: * **Manage Users and Roles**: * Invite users and assign them roles (admin, developer, business user, etc.) * Control permissions for access to different applications and features * Map SSO roles to ASAPP roles for seamless access * **View Audit Logs**: * Track all configuration changes, deployments, and user actions for compliance and troubleshooting * Search, filter, and export audit logs for review ## Quick Navigation AI Console provides quick navigation to the product pages and company resources. AI Console Quick Navigation ## Next Steps Now that you understand the AI Console, here are the recommended next steps to get started: Learn how to access the developer portal and make your first API calls. Set up and configure GenerativeAgent for your use cases. Configure your messaging platform with intents, flows, and virtual agents. Set up user roles and permissions for your team. --- # Source: https://docs.asapp.com/ai-productivity/ai-summary.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # AI Summary > Use AI Summary to extract insights and data from your conversations AI Summary provides a set of APIs that enable you to extract insights from the wealth of data generated when your agents talk to your customers. AI Summary insights use ASAPP's Generative AI (LLMs). Organizations use these insights to identify custom data, intents, topics, entities, sentiment drivers, and other structured data from every voice or chat (message) interaction between a customer and an agent. You can customize AI Summary to your specific use cases, such as workflow optimizations, trade confirmations, compliance monitoring, and quality assurance. ## Insights and Data With AI Summary, you can extract the following information: | Insight | Description | This enables you to | | :----------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [Free text summary](/ai-productivity/ai-summary/free-text-summary) | Generates a concise text summary of each conversation | | | [Intents](/ai-productivity/ai-summary/intent) | Identifies the topic-level categorization of the customer's primary issue or question | | | [Structured Data](/ai-productivity/ai-summary/structured-data) | Extract specific, customizable data points from a conversation:​ | | ## Customizable ASAPP designs AI Summary to be highly customizable to meet your specific business needs: * **Free Text Summaries and Intents**: We train these features on your historical conversation data for optimal performance. * **Structured Data**: * **Questions**: You have full control over the questions asked. Define any yes/no questions relevant to your business processes or compliance needs. * **Entities**: Configure the system to extract specific data points that matter most to your organization. This level of customization ensures that AI Summary provides precisely the insights you need for your unique use cases. ## Implementation AI Summary requires conversation transcripts to evaluate. You have multiple methods available to provide transcripts: * **API (Real-Time)**: Use the Conversation API to upload conversations. This approach provides a Getting Started guide. * **[AI Transcribe (speech-to-text service)](/ai-productivity/ai-transcribe)**: Use ASAPP's AI Transcribe to transcribe your phone calls. * **[Salesforce plugin (for free text summaries only)](/ai-productivity/ai-summary/salesforce-plugin)**: If you use Salesforce Chat, install our plugin to automatically handle the API interactions. Only free text summary is supported. }> Learn how to start using AI Summary --- # Source: https://docs.asapp.com/ai-productivity/ai-transcribe.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # AI Transcribe > Transcribe your audio with best in class accuracy ASAPP AI Transcribe converts speech to text in real-time for live call audio streams and audio recordings. Use AI Transcribe for voice interactions between contact center agents and their customers, in support of a broad range of use cases including real-time guidance, topical analysis, coaching, and quality management A speech recognition model that transforms spoken form to written forms in real-time powers ASAPP's AI Transcribe service, along with punctuation and capitalization. To optimize performance, you can customize the model to support domain-specific needs by training on historical call audio and adding custom vocabulary to further boost recognition accuracy. ## How it Works A speech recognition model that transforms spoken form to written forms in real-time powers ASAPP's AI Transcribe service, along with punctuation and capitalization. To optimize performance, you can customize the model to support domain-specific needs by training on historical call audio and adding custom vocabulary to further boost recognition accuracy ASAPP designed AI Transcribe to be fast enough to show an agent what was said immediately after every utterance. You can implement AI Transcribe in three main integration patterns: 1. **WebSocket API**: All audio streaming, call signaling, and returned transcripts use a WebSocket API, preceded by an authentication mechanism that uses a REST API. 2. **SIPREC Media Gateway**: The ASAPP media gateway receives audio streaming, and a dedicated API receives call signaling; the system returns transcripts either in real-time or post-call. 3. **Third-Party CCaaS**: A third-party contact center as a service (CCaaS) vendor sends audio to the ASAPP media gateway, and an API sends call signaling; the system returns transcripts either in real-time or post-call. Learn more about AI Transcribe in the Product Guide ## Get Started To get started with AI Transcribe, you need to: 1. Follow the [Developer Quickstart](/getting-started/developers) to get your API Credentials 2. Choose the integration that best fits your use case: ### Platform Connectors Transcribe audio from your SIPRec system using the ASAPP Media Gateway Transcribe audio from your Twilio system using the ASAPP Media Gateway Transcribe audio from your Amazon Connect system using the ASAPP Media Gateway Transcribe audio from your Genesys system using the ASAPP Media Gateway ### Direct Integration Use a websocket to send audio directly to AI Transcribe and receive the transcriptions ## Next Steps Learn more about AI Transcribe in the Product Guide Get started with the Developer Quickstart Guide See a list of feature releases for AI Transcribe --- # Source: https://docs.asapp.com/agent-desk/insights-manager/live-insights/alerts,-signals---mitigation.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Alerts, Signals & Mitigation > Use alerts, signals, and mitigation measures to improve agent task efficiency. To improve user focus and task efficiency, ASAPP elevates various alerts and signals within Live Insights. These alerts notify users when performance is degrading, when the system detects events, or when high queue mitigation measures can be activated based on volume. ## Type of Alerts Live Insights displays four alert types: 1. **Metric Highlighting**: Highlights metrics that are above their target threshold within Live Insights. The system shows the highlights on the Overview page, as well as within single queues and queue groups. The alert will persist until the metric's performance returns below its threshold. 2. **Event-based Alerts**: Detects and records events per conversation and displays them in the conversation activity table. 3. **High Queue Mitigation**: Activates when the queue volume exceeds the target threshold. When active, you can use mitigation measures to reduce queue volume impacts. 4. **High Effort Issue**: Indicates when a high effort issue is awaiting assignment and is currently blocking other issues from being assigned. ## Metric Highlighting Live Insights highlights metrics that are above their target threshold on the Overview page, as well as within single queues and queue groups. The alert persists until the metric's performance returns below its threshold. Where metrics are highlighted: 1. **Conversation performance**: The system can highlight both 'average handle time' and 'average response time'. 2. **Agent performance**: 'Time in status', 'average handle time', and 'average response time'. 3. **Queue performance**: The system can highlight queue-level metrics within a single queue, queue groups, or on the Overview page. ## Event-based Alerts Agents, customers, or you generate events from actions taken. Live Insights detects and records these events and displays them alongside conversation data, within the 'alert' column. 1. **Conversation events**: These events are related to a unique conversation. Agent actions or your actions can generate the events. * **Customer transfers**: When an agent transfers a customer, Live Insights displays an alert next to the conversation. * **Whisper sent**: When you send a whisper message to an agent, Live Insights records and displays the event next to the conversation. 2. **Agent events**: These events impact the agent workload and help you contextualize agent performance. Live Insights displays the events for all targeted agents, within the Agent Performance panel. * **High effort**: Agents that are currently handling a high effort issue. * **Flex concurrency**: The agent is currently flexed and has a higher than normal utilization. ## High Queue Mitigation ASAPP provides tools to enable workforce management groups to act fast when queues are or could be anomalously high. **Tools Overview** Live Insights can: * Monitor queue volume for unusually high volume. * Highlight 'Queued' metric based on severity level. * Activate 'Custom High Wait Time' messaging and replace Estimated Wait Time messaging. * Pause queues experiencing extremely high volume and prevent new queue assignments. **Volume Thresholds:** Live Insights highlights metrics when they reach past a threshold defined for the queue. 1. **Low Severity:** detects abnormal activity and has moderate impact on the queue. 2. **High Severity**: detects highly abnormal activity. The queue is severely impacted. **Mitigation Options:**

Mitigation

Severity Threshold

Features available

Default behavior

Business as usual. All queues are operating based on this setting.

None

  • Estimated Wait Time messaging is active.

  • Routing & assignment rules remain unchanged.

Custom High Wait Time Message

Low severity mitigation measure. Replaces Estimated Wait Time messaging.

Low Severity

  • The system replaces Estimated Wait Time messaging with a custom message.

  • Routing & assignment rules remain unchanged.

Pausing the Queue

High severity mitigation measure. Prevents new assignments to the queue.

High Severity

  • Estimated Wait Time messaging is replaced with a custom message alerting users the queue is currently closed due to high volume.

  • The system pauses assignment to the queue.

  • Users currently in the queue remain in the queue.

  • To time out users waiting in the queue, please contact ASAPP.

### Activate Mitigation 1. **Mitigation menu options**: When available, Live Insights displays a menu on the relevant queue card in the Overview, as well as on the 'Performance' page of single queues and queue groups. To view those options, click the **menu** icon. The menu icon only displays when you highlight 'Queued'. 2. **Select mitigation**: Based on the severity level, Live Insights displays different mitigation options. Select an **option** to activate it. To remove the mitigation behavior, select **Default behavior**. 3. **Mitigation applied**: When you select a mitigation option, the system indicates it on the queue card or on the Performance page. ## High Effort Issues ASAPP supports a capability to enable agent focus for higher effort issues, while maintaining efficiency. This feature dynamically adjusts how many concurrent issues an agent should handle while assigned a high effort issue. ### What is a High Effort Issue ASAPP will route customers based on the expected effort of their issue. All issues, by default, will have an effort of 1. Any issue with an effort value greater than 1 becomes "high effort". Reach out to your ASAPP Implementation team to configure high effort rules for your program. ## Feature Definition * **Slot**: A slot represents a space for a chat to be assigned to an agent. You can assign and configure multiple slots to a single agent via User Management. * **Effort**: Effort represents what is needed from an agent to solve an issue. For each effort point assigned to an issue, an agent must have an equivalent number of available slots to be assigned that issue. ASAPP determines an issue's effort by its relevant customer attributes. * **High Effort Time Threshold**: A threshold that sets how much time an agent can parallelize a high effort issue with other issues. You can configure this threshold per queue. This threshold represents the duration of all existing assignments an agent is handling when a high effort issue is next in line. * **Flex Slot**: All agents have 1 additional slot that can be used if they are eligible to receive a flex assignment or if they are temporarily over-effort when handling a high effort issue. * **Linear Utilization Level:** A type of Linear Utilization relative to the number of assignments an agent has assigned at a given time, regardless of the assignment workload state. * **Assignment Workload**: A measure of Linear Workload relative to the number of active assignments an agent has assigned at a given time. An assignment is not considered active if it has caused an agent to become Flex Eligible. * **Effort Workload**: A measure of Linear Workload relative to the issue effort of all active assignments an agent has assigned at a given time. ### How are high effort issues prioritized and assigned? ASAPP assigns high effort chats in the order that they entered the queue. You can prioritize high effort chats higher in the queue using customer attributes. This prioritization is optional and not required. A configurable *high effort time threshold* allows each queue to set how much time an agent can parallelize a high effort issue with other assignments. ### How are high effort issues assigned against other issues? ASAPP assigns high effort issues in order of configured priority and when they entered the queue. An agent will receive a high effort assignment if they meet at least 1 of the following criteria: * An agent has 0 active assignments. * An agent has sufficient open slots to receive a high effort assignment. * The **high effort time threshold** has elapsed for all of an agent's current assignments and the high effort chat's effort would not extend the agent's Effort Workload past their Flex Slot. ### How do high effort issues impact performance? * High effort issues will not change current behavior for Queue Priority. * High effort issues will not change current behavior for Flex Eligibility or Flex Protect. * High effort issues take longer to assign because they have to wait for an agent to have sufficient effort capacity. * If a set of queues has 50% or more agents in common, then a high effort issue at the front of one queue will hold the issues in the other "shared" queues until it is assigned. ### How do I monitor the impact of high effort issues? You can view the 'Queued - High Effort' metric in Live Insights on queue detail pages. This metric captures the number of high effort issues currently waiting in the queue. If a high effort issue is first in queue and slows other issues from being assigned, Live Insights displays an alert on this metric. These changes will also be visible for programs that do not have high effort rules configured. ### How can I tell which agents are handling high effort issues? In the Agent Right Rail, you can monitor which agents are currently handling high effort issues. ASAPP displays an icon next to the agent's utilization indicating a high effort issue is assigned. These changes will also be visible for programs that do not have high effort rules configured. --- # Source: https://docs.asapp.com/generativeagent/integrate/amazon-connect-pstn.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Amazon Connect > Learn how to integrate GenerativeAgent into Amazon Connect The Amazon Connect integration with ASAPP's GenerativeAgent allows callers to have conversations with GenerativeAgent while maintaining the call entirely with in your Amazon Connect contact center. Call transfers facilitate connecting users to GenerativeAgent via PSTN (dialing a number) while maintaining your control over the entire call duration. This guide demonstrates how GenerativeAgent integrates with Amazon Connect using Call Transfer over PSTN. ## How it works At a high level, the Amazon Connect integration with GenerativeAgent works by handing off the conversation between your Amazon Connect flow and GenerativeAgent: 1. **Hand off the conversation** to GenerativeAgent through Call Transfer over PSTN. 2. **GenerativeAgent handles the conversation** using Lambda functions to communicate with ASAPP's APIs, and respond to the caller using a Text to Speech (TTS) service. 3. **Return control back** to your Amazon Connect Flow when: * The conversation is successfully completed * The caller requests a human agent * An error occurs 4. **Use Output Context of the call** to determine the next course of action. Here's how a GenerativeAgent call will work in detail within your Amazon Connect: 1. Incoming call: A customer calls your existing phone number. 2. Call Processing: Amazon Connect processes the call and determines when to transfer to GenerativeAgent. 3. Request a number: Amazon Connect invokes a Lambda function to request a phone number from ASAPP to transfer the call to. 4. Transfer the call: Amazon Connect transfers the call to the GenerativeAgent using Call Transfer over PSTN. 5. GenerativeAgent interaction: GenerativeAgent takes over the call and engages with the customer using ASAPP's APIs. It processes the customer's requests, generates responses, communicates back to the customer. 6. Call Transfer back: The call with GenerativeAgent disconnects, and control returns to Amazon Connect. 7. Request Call Context: Amazon Connect requests the call context from GenerativeAgent using a Lambda function and passes the input context/ variable to determine the outcome of the conversation. 8. Call Context: GenerativeAgent returns the call context to Amazon Connect, which includes: * The conversation outcome * Any error messages * Instructions for next steps (e.g., transfer to agent) 9. Next Steps: Based on the call context, Amazon Connect decides the next steps, such as: * Ending the call if the conversation was successful. * Transferring to a human agent if requested by the customer. * Handling errors appropriately. ## Before you Begin Before using the GenerativeAgent integration with Amazon Connect, you need to: * [Get your API Key Id and Secret](/getting-started/developers#access-api-credentials) * Ensure your API key has been configured to access GenerativeAgent APIs. Reach out to your ASAPP team if you need access enabled. * Have an existing Amazon Connect instance: * Have claimed phone numbers. * Access to an Amazon Connect admin account. * Be familiar with AWS including Amazon Connect, IAM roles, and more: You will set up and configure the following AWS services: * **Amazon Connect** - Handles call flow and audio streaming * **Lambda functions** - These functions will handle communication between Amazon Connect and GenerativeAgent * Enable Call Transfer over PSTN by contacting your ASAPP account team. ## Configuring Amazon Connect with GenerativeAgent ### Step 1: Create Lambda Functions Lambda functions are used to interact with ASAPP's GenerativeAgent APIs to create call transfers and retrieve call context. They can be created using the AWS Console or AWS API. To create a Lambda function in AWS Console: 1. Log in to the AWS Management Console. 2. Open Lambda. 3. Select **Author from scratch** and fill in the required fields: * **Function name**: `call-transfer` or 'get-call-context ' * **Runtime**: Select `Node.js 22.x` * **Architecture**: Select `x86_64` * Under **Change default execution role**, select **"Create a new role with basic Lambda permissions"**. This option automatically adds the necessary permissions for basic Lambda execution and CloudWatch logging. * CloudWatch logging is required for debugging and monitoring Lambda executions, so ensure these permissions are included. * If you are creating the Lambda function using infrastructure-as-code tools (such as Terraform), you must ensure the following permissions are included in the execution role: * Allow `logs:CreateLogStream` and `logs:PutLogEvents` for all streams under your CloudWatch Log Group. * Allow `lambda:InvokeFunction` action in your resource base policy. * List `connect.amazonaws.com` as the Principal Service in your resource policy. After filling in the required fields, click **Create function**. 4. In the **Function Overview** section, look for **ARN** and save it. 5. Go to the **Code** tab, click upload from and select `.zip` file to upload your Lambda function code. Click **Deploy.** 6. Go to the **Configuration** tab, select **Environment variables**, and add the following environment variables: | Variable | Description | | -----------------: | :---------------------------------------------------- | | `ASAPP_API_ID` | API Credential provided by ASAPP. | | `ASAPP_API_SECRET` | API Credential provided by ASAPP. | | `ASAPP_API_HOST` | API hostname provided by ASAPP, usually api.asapp.com | 7. Click **Save**. ```javascript theme={null} const ASAPP_API_ID = process.env.ASAPP_API_ID; const ASAPP_API_SECRET = process.env.ASAPP_API_SECRET; const ASAPP_API_HOST = process.env.ASAPP_API_HOST; export const handler = async function (event) { console.log("Received event:", JSON.stringify(event, null, 2)); let contactId = event.Details?.ContactData?.ContactId; if (!contactId) { console.error("ContactId not found in event"); return { result: "error", error: "ContactId not found in event", transferNumber: "" } } let taskName; if (event.Details?.Parameters?.taskName) taskName = event.Details.Parameters.taskName; let customerId = event.Details?.ContactData?.CustomerEndpoint?.Address; if (event.Details?.Parameters?.customerId) customerId = event.Details.Parameters.customerId; let requestBody = { id: contactId, externalConversationId: contactId, type: "PHONE_NUMBER", phoneNumber: { country: "US" }, inputContext: { inputVariables: {} } }; if (taskName) requestBody.inputContext.taskName = taskName; if (customerId) requestBody.inputContext.inputVariables.customerId = customerId; for (const [key, value] of Object.entries(event.Details.Parameters)) { if (key !== "taskName" && key !== "customerId") { requestBody.inputContext.inputVariables[key] = value; } } let response; try { response = await fetch(`https://${ASAPP_API_HOST}/generativeagent/v1/call-transfers`, { method: "POST", headers: { "Content-Type": "application/json", "asapp-api-id": ASAPP_API_ID, "asapp-api-secret": ASAPP_API_SECRET }, body: JSON.stringify(requestBody) }); } catch (error) { console.error("Error calling ASAPP API:", error); return { result: "error", error: error.message, transferNumber: "" } } if (!response.ok) { let responseText = await response.text(); console.error("Error calling ASAPP API:", response.statusText,responseText); return { result: "error", error: response.statusText, transferNumber: "" } } const responseData = await response.json(); console.log("ASAPP API response:", responseData); let transferNumber = responseData.phoneNumber?.transferNumber; if (!transferNumber) { console.error("Transfer number not found in ASAPP API response"); return { result: "error", error: "Transfer number not found in ASAPP API response", transferNumber: "" } } return { result: "ok", transferNumber: transferNumber } }; ``` **Parameters:** | Parameter | Description | | -----------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `taskName` | (Optional) The name of the GenerativeAgent task to be initiated in the initial Connections. | | `customerId` | The unique identifier for the customer. If not provided, the calling number of the caller will be used as the customerId. Ensure the value is unique and consistent for each customer to avoid integration issues. | **Response:** | Field | Type | Description | | ---------------: | :----- | :--------------------------------------------------------------------- | | `result` | string | "ok" if the call transfer was created successfully, "error" otherwise. | | `error` | string | Error message if the call transfer failed. | | `transferNumber` | string | A E.164 formatted PSTN number assigned to transfer the call by ASAPP. | ```javascript theme={null} const ASAPP_API_ID = process.env.ASAPP_API_ID; const ASAPP_API_SECRET = process.env.ASAPP_API_SECRET; const ASAPP_API_HOST = process.env.ASAPP_API_HOST; export const handler = async function (event) { console.log("Received event:", JSON.stringify(event, null, 2)); let contactId = event.Details?.ContactData?.ContactId; if (!contactId) { console.error("ContactId not found in event"); return { result: "error", error: "ContactId not found in event", outputContext: {} } } let response; try { response = await fetch(`https://${ASAPP_API_HOST}/generativeagent/v1/call-transfers/${contactId}`, { method: "GET", headers: { "asapp-api-id": ASAPP_API_ID, "asapp-api-secret": ASAPP_API_SECRET } }); } catch (error) { console.error("Error calling ASAPP API:", error); return { result: "error", error: error.message, outputContext: {} } } if (!response.ok) { console.error("Error calling ASAPP API:", response.statusText); return { result: "error", error: response.statusText, outputContext: {} } } const responseData = await response.json(); console.log("ASAPP API response:", responseData); if (!responseData.outputContext) { console.error("Output context not found in ASAPP API response"); return { result: "error", error: "Output context not found in ASAPP API response", outputContext: {} } } return { result: "ok", outputContext: responseData.outputContext } }; ``` **Parameters:** | Parameter | Description | | ----------: | :---------------------------------------------------------------------------------------------------- | | `contactId` | The unique identifier for the contact. This is typically the ContactId from the Amazon Connect event. | **Response:** | Field | Type | Description | | --------------: | :----- | :---------------------------------------------------------------------------------------------------------------------------- | | `result` | string | "ok" if the call context was retrieved successfully, "error" otherwise. On "Ok" response, it includes the Call Transfer Data. | | `outputContext` | object | The output context of the call, which includes the conversation | **Call Transfer Data** | Field | Type | Description | | ---------------------------------: | :----- | :--------------------------------------------------------------------------------------------------------- | | `ID` | string | The unique identifier for the call transfer. This is typically the Transfer ID. | | `externalConversationId` | string | The external conversation ID associated with the call transfer. | | `status` | string | The status of the call transfer, e.g., "COMPLETED". | | `createdAt` | string | The timestamp when the call transfer was created. | | `callReceivedAt` | string | The timestamp when the call was received. | | `completedAt` | string | The timestamp when the call transfer was completed. | | `inputContext` | object | The input context for the call transfer, which includes variables such as `taskName` and `inputVariables`. | | `inputContext.taskName` | string | The name of the task being handled by GenerativeAgent. | | `inputContext.inputVariables` | object | Key-value pairs of input variables used in the conversation. | | `inputContext.inputVariables.name` | string | The unique identifier for the customer. | | `type` | string | The type of transfer, which is "PHONE\_NUMBER" for this integration. | | `phoneNumber` | object | The phone number details for the transfer. | | `phoneNumber.country` | string | The country code for the phone number, e.g., "US". | | `phoneNumber.transferNumber` | string | The E.164 formatted PSTN number assigned to transfer the call by ASAPP. | **Status** | Status | Description | | ----------: | :----------------------------------------------------------------------------------------- | | `ACTIVE` | The call transfer is currently active and the temporary number is waiting to be connected. | | `ONGOING` | The call transfer is in progress and the GenerativeAgent is still handling the call. | | `COMPLETED` | The call transfer has been completed successfully. | | `EXPIRED` | The call transfer has expired and the temporary number is no longer valid. | **Output Context** | Field | Type | Description | | -------------------: | :----- | :--------------------------------------------------------------- | | `transferType` | string | The type of transfer. This can either be `SYSTEM` or `AGENT`. | | `currentTaskName` | string | The name of the current task being handled by GenerativeAgent. | | `referenceVariables` | object | Key-value pairs of reference variables used in the conversation. | | `transferVariables` | object | Key-value pairs of transfer variables used in the conversation. | You can have the metrics, logging, redundancy, warm starts, and other settings configured as per your specific requirements, environment, and uses cases. ### Step 2: Add your Lambda Functions to your Amazon Connect instance The Lambda function must be added to your Amazon Connect instance to be used in the contact flow. To do this: 1. Open the Amazon Connect console. 2. Select your Amazon Connect instance. 3. In the left navigation pane, choose **Contact flows**. 4. Choose **AWS Lambda functions** from the dropdown menu. 5. Click **Add Lambda function**. 6. Select the Lambda function `call-transfer` you created earlier. 7. Click **Add**. 8. Repeat the process for the `get-call-context` Lambda function. ### Step 3: Set Up Flow in Amazon Connect To createa a Call Transfer record in your Amazon Connect contact flow, you need to reference the `call-transfer` Lambda function: 1. In the Amazon Connect console, open your contact flow. 2. Add an **Invoke AWS Lambda function** block at the point where you want to initiate the transfer. 3. Select the `call-transfer` Lambda function. 4. Map any required parameters (such as `taskName` or `customerId`) in the block’s configuration. 5. Use the output variable `transferNumber` from the Lambda function as the destination number in a **Transfer to phone number** block. 6. Check for failure scenarios and handle errors appropriately. 7. Connect the blocks to complete the flow. 1. Go to **"Transfer to phone number"** block and navigate to the **Properties** panel. 2. Set the **Transfer Via** to **"Phone number"**. 3. Under **Phone number**, select **Set Dynamically**. 4. The **Namespace** must be set to `External`. 5. The **Key** must be set to `transferNumber`. 6. Set **Resume Flow after Disconnect** to **Yes**. 7. Connect the output of this block to the next step in your flow. 1. Add another **Invoke AWS Lambda function** block after the transfer block. 2. Select the `get-call-context` Lambda function. 3. Map the `ContactId` from the Amazon Connect flow to the Lambda function input. 4. Use the output variable `outputContext` from the Lambda function to determine the next steps. 5. Connect the output of this block to the next step in your flow. 1. Use the output context from the `get-call-context` Lambda function to determine the next steps in your flow. 2. Based on the following fields in the output context, you can decide how to proceed: * **Transfer Type**: If it is `AGENT`, you can transfer the call to a human agent. If it is `SYSTEM`, you can trnasfer the call back to the IVR. * **Current Task Name**: If it matches a specific task, you can route the call accordingly. * **Reference Variables**: Use these variables to provide additional context or information to the customer. * **Transfer Variables**: Use these variables to handle any specific transfer logic. ## Next Steps Now that you have integrated GenerativeAgent with Amazon Connect, here are some important next steps to consider: Learn how to configure GenerativeAgent's behaviors, tasks, and communication style Configure your APIs to allow GenerativeAgent to access necessary data and perform actions Connect and optimize your knowledge base to improve GenerativeAgent's responses Follow the deployment checklist to launch GenerativeAgent in your production environment --- # Source: https://docs.asapp.com/ai-productivity/ai-transcribe/amazon-connect.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Deploying AI Transcribe for Amazon Connect > Use AI Transcribe in your Amazon Connect solution ## Overview This guide covers the **Amazon Connect** solution pattern, which consists of the following components to receive speech audio and call signals, and return call transcripts: * Media gateways for receiving call audio from Amazon Kinesis Video Streams * Start/Stop API for Lambda functions to provide call data and signals for when to start and stop transcribing call audio ASAPP can also accept requests to start and stop transcription via API from other call-state aware services. AWS Lambda functions are the approach outlined in this guide. * Required AWS IAM role to allow access to Kinesis Video Streams * Webhook to POST real-time transcripts to a designated URL of your choosing, alongside two additional APIs to retrieve transcripts after-call ASAPP works with you to understand your current telephony infrastructure and ecosystem. Your ASAPP account team will also determine the main use case(s) for the transcript data to determine where and how call transcripts should be sent. ### Integration Steps There are five parts of the integration process: 1. Setup Authentication for Kinesis Video Streams 2. Enable Audio Streaming to Kinesis Video Streams 3. Add Start Media and Stop Media To Flows 4. Send Start and Stop Requests to ASAPP 5. Receive Transcript Outputs ### Requirements **Audio Stream Codec** AWS Kinesis Video Streams provides MKV format, which ASAPP supports. You do not need any modification or additional transcoding when forking audio to ASAPP. When supplying recorded audio to ASAPP for AI Transcribe model training prior to implementation, send uncompressed .WAV media files with speaker-separated channels. Recordings for training should have a sample rate of 8000 and 16-bit PCM audio encoding. See the [Customization section of the AI Transcribe Product Guide](/ai-productivity/ai-transcribe/product-guide#customization) for more on data requirements for transcription model training. **Developer Portal** ASAPP provides an AI Services [Developer Portal](/getting-started/developers). Within the portal, developers can do the following: * Access relevant API documentation (e.g. OpenAPI reference schemas) * Access API keys for authorization * Manage user accounts and apps Visit the [Get Started](/getting-started/developers) for instructions on creating a developer account, managing teams and apps, and setting up AI Service APIs. ## Integrate with Amazon Connect ### 1. Set Up Authentication for Kinesis Video Streams The audio streams for Amazon Connect are stored in the Amazon Kinesis Video Streams service in your AWS account where the Amazon Connect instance resides. [IAM policies control](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/how-iam) the access to the Kinesis Video Streams service. ASAPP will use [IAM Roles for Service accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts) to receive a specific IAM role in the ASAPP account, for example `asapp-prod-mg-amazonconnect-role`. Setup your account's IAM role (e.g., `kinesis-connect-access-role-for-asapp`) to trust `asapp-prod-mg-amazonconnect-role` to assume it and create a policy permitting list/read operations on appropriate Kinesis Video Streams associated with Amazon Connect instance. ### 2. Enable Audio Streaming to Kinesis Video Streams ASAPP retrieves streaming audio by sending requests to Kinesis Video Streams. Streaming media is not enabled by default and you must turn it on manually. Enable live media streaming for applicable instances in your Amazon Connect console to ensure audio is available when ASAPP sends requests to Kinesis Video Streams. If you choose to use a non-default KMS key, ensure that the IAM role for Service Accounts (IRSA) created for ASAPP has access to this KMS key. Amazon provides [documentation to guide enabling live media streaming to Kinesis Video Streams](https://docs.aws.amazon.com/connect/latest/adminguide/enable-live-media-streams). ### 3. Add Start Media and Stop Media To Flows Sending streaming media to Kinesis Video Streams is initiated and stopped by inserting preset blocks - called **Start media streaming** and **Stop media streaming** - into Amazon Connect flows. Place these blocks into your flows to programmatically set when the system will stream and stop media - this determines what audio will be available for transcription. Typically for ASAPP, audio streaming begins as close as possible to when the agent is assigned. Audio streaming typically stops ahead of parts of calls that should not be transcribed such as holds, transfers, and post-call surveys. When placing the **Start media streaming** block, ensure **From the customer** and **To the customer** menu boxes are checked so that both participants' call media streams are available for transcription. Amazon provides [documentation on adding Start media streaming and Stop media streaming blocks](https://docs.aws.amazon.com/connect/latest/adminguide/use-media-streams-blocks) to Amazon Connect flows. ### 4. Send Start and Stop Requests to ASAPP AWS Lambda functions can be inserted into Amazon Connect flows in order to send requests directly to ASAPP APIs to start and stop transcription. ASAPP can also accept requests to start and stop transcription via API from other call-state aware services. If you are using another service to interact with ASAPP APIs, you can use AWS Lambda functions to send important call metadata to your other services before they send requests to ASAPP. The approach outlined in this guide is to call ASAPP APIs directly using AWS Lambda functions. As outlined in [Requirements](#requirements "Requirements"), user accounts must be created in the developer portal in order to enroll apps and receive API keys to interact with ASAPP endpoints. Lambda functions (or any other service you use to interact with ASAPP APIs) require these API keys to send requests to start and stop transcription. See the [Endpoints](#endpoints "Endpoints") section to learn how to interact with them, including what you need to include in requests to each endpoint. ASAPP will not begin transcribing call audio until you request it to, at which point we will request the audio from Kinesis Video Streams and begin transcribing. With AWS Kinesis Video streams, there are 2 supported selectorTypes to start-streaming: * **NOW**: NOW will start transcribing from the most recent audio data in the Kinesis stream. * **FRAGMENT\_NUMBER**: FRAGMENT\_NUMBER will require another parameter afterFragmentNumber to be populated and would be the fragment within the media stream to start (for example, the start fragment number to capture all transcripts in the stream prior to start-streaming being called). The `/start-streaming` endpoint request requires several fields, but three specific attributes must come from Amazon: * Amazon Connect Contact Id (multiple possible sources) JSONPath formats: `$.ContactId`, `$.InitialContactId`, `$.PreviousContactId` * Audio Stream ARN JSONPath format: `$.MediaStreams.Customer.Audio.StreamARN` * \[OPTIONAL] Start Fragment Number JSONPath format: `$.MediaStreams.Customer.Audio.StartFragmentNumber` Requests to `/start-streaming` also require agent and customer identifiers. These identifiers can be sourced from Amazon Connect but may also originate from other systems if your use case requires it. Stop requests pause or end transcription for any needed reason. For example, you could use a stop request when the agent initiates a transfer to another agent or queue or at the end of the call to prevent transcribing post-call interactions such as satisfaction surveys. AI Transcribe is only meant to transcribe conversations between customers and agents - you should implement start and stop requests to ensure the system does not transcribe non-conversation audio (e.g., hold music, IVR menus, surveys). Attempted transcription of non-conversation audio will negatively impact other services meant to consume conversation transcripts, such as ASAPP AI Summary. #### Adding Lambda Functions to Flows First, create and deploy two new Lambda functions in the AWS Lambda console: one for  sending a request to ASAPP's `/start-streaming` endpoint and another for sending a request to ASAPP's `/stop-streaming` endpoint. Refer to the [API Reference in ASAPP's Developer Portal](/apis/autotranscribe-media-gateway/start-streaming) for detailed specifications for sending requests to each endpoint. Once Lambda functions are deployed and configured, add the Lambda functions to your Amazon Connect instance using the Amazon Connect console. Once added, the Lambda functions will be available for use in your existing applicable flows. In Amazon Connect's flow tool, add an Invoke **AWS Lambda function** where you want to make a request to ASAPP's APIs. * For requests to `/start-streaming` endpoint, place the Lambda block following the **Start media streaming** flow block * For requests to `/stop-streaming` endpoint, place the Lambda block immediately before the **Stop media streaming** flow block. Amazon provides [documentation on invoking AWS Lambda functions](https://docs.aws.amazon.com/connect/latest/adminguide/connect-lambda-functions). ### 5. Receive Transcript Outputs AI Transcribe outputs transcripts using three separate mechanisms, each corresponding to a different temporal use case: * **[Real-time](#real-time-via-webhook "Real-Time via Webhook")**: Webhook posts complete utterances to your target endpoint as they are transcribed during the live conversation * **[After-call](#after-call-via-get-request "After-Call via GET Request")**: GET endpoint responds to your requests for a designated call with the full set of utterances from that completed conversation * **[Batch](#batch-via-file-exporter "Batch via File Exporter")**: File Exporter service responds to your request for a designated time interval with a link to a data feed file that includes all utterances from that interval's conversations #### Real-Time via Webhook ASAPP sends transcript outputs in real-time via HTTPS POST requests to a target URL of your choosing. Authentication Once the target is selected, work with your ASAPP account team to implement one of the following supported authentication mechanisms: * **Custom CAs:** Custom CA certificates for regular TLS (1.2 or above). * **mTLS:** Mutual TLS using custom certificates provided by the customer. * **Secrets:** A secret token. The secret name is configurable as is whether it appears in the HTTP header or as a URL parameter. * **OAuth2 (client\_credentials):** Client credentials to fetch tokens from an authentication server. Expected Load Target servers should be able to support receiving transcript POST messages for each utterance of every live conversation on which AI Transcribe is active. For reference, an average live call sends approximately 10 messages per minute. At that rate, 50 concurrent live calls represents approximately 8 messages per second. Please ensure the selected target server is load tested to support anticipated peaks in concurrent call volume. Transcript Timing and Format Once you have started transcription for a given call stream using the `/start-streaming` endpoint, AI Transcribe begins to publish `transcript` messages, each of which contains a full utterance for a single call participant. The expected latency between when ASAPP receives audio for a completed utterance and provides a transcription of that same utterance is 200-600ms. Perceived latency will also be influenced by any network delay sending audio to ASAPP and receiving transcription messages in return. Though we send messages in the order they are transcribed, network latency may impact the order in which they arrive or cause messages to be dropped due to timeouts. Where latency causes timeouts, the system will drop the oldest pending messages first; AI Transcribe does not retry to deliver dropped messages. The message body for `transcript` type messages is JSON encoded with these fields: | Field | Subfield | Description | Example Value | | :--------------------- | :--------- | :-------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | | externalConversationId | | Unique identifier with the Amazon Connect Contact Id for the call | 8c259fea-8764-4a92-adc4-73572e9cf016 | | streamId | | Unique identifier that ASAPP assigns to each call participant's stream returned in response to `/start-streaming` and `/stop-streaming` | 5ce2b755-3f38-11ed-b755-7aed4b5c38d5 | | sender | externalId | Customer or agent identifier as provided in request to `/start-streaming` | ef53245 | | sender | role | A participant role, either customer or agent | customer, agent | | autotranscribeResponse | message | Type of message | transcript | | autotranscribeResponse | start | The start ms of the utterance | 0 | | autotranscribeResponse | end | Elapsed ms since the start of the utterance | 1000 | | autotranscribeResponse | utterance | Transcribed utterance text | Are you there? | Expected `transcript` message format: ```json theme={null} { "type": "transcript", "externalConversationId": "", "streamId": "", "sender": { "externalId": "", "role": "customer", // or "agent" }, "autotranscribeResponse": { "message": "transcript", "start": 0, "end": 1000, "utterance": [ {"text": ""} ] } } ``` ## Error Handling Should your target server return an error in response to a POST request, ASAPP will record the error details for the failed message delivery and drop the message. ### After-Call via GET Request AI Transcribe makes a full transcript available at the following endpoint for a given completed call: `GET /conversation/v1/conversation/messages` Once a conversation is complete, make a request to the endpoint using a conversation identifier and the system returns every message in the conversation. ### Message Limit This endpoint responds with up to 1,000 transcribed messages per conversation, approximately a two-hour continuous call. You receive all messages in a single response without any pagination. To retrieve all messages for calls that exceed this limit, use either a real-time mechanism or File Exporter for transcript retrieval. You set transcription settings (e.g., language, detailed tokens, redaction) for a given call with the Start/Stop API when you initiate call transcription. All transcripts retrieved after the call will reflect the initially requested settings with the Start/Stop API. See the [Endpoints](#endpoints "Endpoints") section to learn how to interact with this API. #### Batch via File Exporter AI Transcribe makes full transcripts for batches of calls available using the File Exporter service's `utterances` data feed. The File Exporter service is meant to be used as a batch mechanism for exporting data to your data warehouse, either on a scheduled basis (e.g. nightly, weekly) or for ad hoc analyses. Data that populates feeds for the File Exporter service updates once daily at 2:00AM UTC. Visit [Retrieving Data from ASAPP Messaging](/reporting/file-exporter) for a guide on how to interact with the File Exporter service. ## Use Case Example Real-Time Transcription This real-time transcription use case example consists of an English language call between an agent and customer with redaction enabled, ending with a hold. Note that redaction is enabled by default and does not need to be requested explicitly. 1. When the customer and agent are connected, send ASAPP a request to start transcription for the call: **POST** `/mg-autotranscribe/v1/start-streaming` **Request** ```json theme={null} { "namespace": "amazonconnect", "guid": "8c259fea-8764-4a92-adc4-73572e9cf016", "customerId": "TT9833237", "agentId": "RE223444211993", "autotranscribeParams": { "language": "en-US" }, "amazonConnectParams": { "streamArn": arn:aws:kinesisvideo:us-east-1:145051540001:stream/streamtest-connect-asappconnect-contact-cccaa6b8-12e4-44a6-90d5-829c4fdf68e4/1696422764859TBD, "startSelectorType":"NOW" } } ``` **Response** *STATUS 200: Router processed the request, details are in the response body* ```json theme={null} { "isOk": true, "autotranscribeResponse": { "customer": { "streamId": "5ce2b755-3f38-11ed-b755-7aed4b5c38d5", "status": { "code": 1000, "description": "OK" } }, "agent": { "streamId": "cf31116-3f38-11ed-9116-7a0a36c763f1", "status": { "code": 1000, "description": "OK" } } } } ``` 2. The agent and customer begin their conversation and separate HTTPS POST `transcript` messages are sent for each participant from ASAPP's webhook publisher to a target endpoint configured to receive the messages. HTTPS **POST** for Customer Utterance ```json theme={null} { type: "transcript", externalConversationId: "8c259fea-8764-4a92-adc4-73572e9cf016", streamId: "5ce2b755-3f38-11ed-b755-7aed4b5c38d5", sender: { externalId: "TT9833237", role: "customer", }, autotranscribeResponse: { message: 'transcript', start: 400, end: 3968, utterance: [ {text: "I need help upgrading my streaming package and my PIN number is ####"} ] } } ``` HTTPS **POST** for Agent Utterance ```json theme={null} { type: "transcript", externalConversationId: "8c259fea-8764-4a92-adc4-73572e9cf016", streamId: "cf31116-3f38-11ed-9116-7a0a36c763f1", sender: { externalId: "RE223444211993", role: "agent", }, autotranscribeResponse: { message: 'transcript', start: 4744, end: 8031, utterance: [ {text: "Thank you sir, let me pull up your account."} ] } } ``` 3. Later in the conversation, the agent puts the customer on hold. This triggers a request to the `/stop-streaming` endpoint to pause transcription and prevents hold music and promotional messages from being transcribed. **POST** `/mg-autotranscribe/v1/stop-streaming` **Request** ```json theme={null} { "namespace": "amazonconnect", "guid": "8c259fea-8764-4a92-adc4-73572e9cf016", } ``` **Response** *STATUS 200: Router processed the request, details are in the response body* ```json theme={null} { "isOk": true, "autotranscribeResponse": { "customer": { "streamId": "5ce2b755-3f38-11ed-b755-7aed4b5c38d5", "status": { "code": 1000, "description": "OK" }, "summary": { "totalAudioBytes": 1334720, "audioDurationMs": 83420, "streamingSeconds": 84, "transcripts": 2 }, "agent": { "streamId": "cf31116-3f38-11ed-9116-7a0a36c763f1", "status": { "code": 1000, "description": "OK" }, "summary": { "totalAudioBytes": 1334720, "audioDurationMs": 83420, "streamingSeconds": 84, "transcripts": 2 }, } } } ``` ### Data Security ASAPP's security protocols protect data at each point of transmission, from first user authentication to secure communications to our auditing and logging system (which includes hashing of data in transit) all the way to securing the environment when data is at rest in the data logging system. The teams at ASAPP are also under tight restraints in terms of access to data. These security protocols protect both ASAPP and its customers. --- # Source: https://docs.asapp.com/apis/generativeagent/analyze-conversation.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Analyze conversation > Call this API to trigger GenerativeAgent to analyze and respond to a conversation. This API should be called after a customer sends a message while not speaking with a live agent. The Bot replies will not be returned on this request; they will be delivered asynchronously via the webhook callback. This API also adds an optional **message** field to create a message for a given conversation before triggering the bot replies. The message object is the exact same message used in the conversations API /message endpoint ## OpenAPI ````yaml api-specs/generativeagent.yaml post /generativeagent/v1/analyze openapi: 3.0.1 info: title: GenerativeAgent API description: > GenerativeAgent API allows customers to interact with a chat / voice automation bot leveraging LLMs by sending messages and receiving responses asynchronously through webhooks contact: email: api-info@asapp.com license: name: ASAPP Software License url: https://api.asapp.com/LICENSE version: '0.1' servers: - url: https://api.sandbox.asapp.com security: - API-ID: [] API-Secret: [] tags: - name: GenerativeAgent description: >- Operations to send messages and trigger GenerativeAgent to respond or query the current state paths: /generativeagent/v1/analyze: post: tags: - GenerativeAgent summary: Analyze conversation description: > Call this API to trigger GenerativeAgent to analyze and respond to a conversation. This API should be called after a customer sends a message while not speaking with a live agent. The Bot replies will not be returned on this request; they will be delivered asynchronously via the webhook callback. This API also adds an optional **message** field to create a message for a given conversation before triggering the bot replies. The message object is the exact same message used in the conversations API /message endpoint operationId: postAnalyze requestBody: required: true content: application/json: schema: type: object description: >- The parameters for triggering the analysis and response to a conversation properties: streamId: type: string description: >- The id associated with the connection where the responses should be sent to. example: 97555020-0276-435f-8104-c378221ba292 conversationId: type: string description: Internal conversation identifier from ASAPP example: 01BX5ZZKBKACTAV9WEVGEMMVS0 taskName: type: string description: Name of the task to be used in the analysis example: UpgradePlan inputVariables: type: object description: Input variables to be used as context in the analysis. example: call_context: Customer called to upgrade their current plan to GOLD customer_info: current_plan: SILVER customer_since: '2020-01-01' message: description: Represents a single message within a conversation. type: object properties: text: type: string minLength: 1 description: The content of the message. sender: description: Information about the participant who sent the message. type: object properties: role: description: The role of the participant in the conversation. type: string enum: - agent - customer - system externalId: type: string description: >- The unique identifier for the participant in your external system. This should be consistent across all interactions for the same individual. required: - role - externalId timestamp: type: string format: date-time description: >- The time when the message was sent. Include the timezone, otherwise UTC will be assumed. required: - text - sender - timestamp example: text: Hello, I would like to upgrade my internet plan to GOLD. sender: role: agent externalId: 123 timestamp: '2021-11-23T12:13:14.555Z' channelType: description: Channel type used by the current request (digital or voice) type: string enum: - digital - voice example: digital required: - conversationId example: conversationId: 01BX5ZZKBKACTAV9WEVGEMMVS0 message: text: Hello, I would like to upgrade my internet plan to GOLD. sender: role: agent externalId: 123 timestamp: '2021-11-23T12:13:14.555Z' taskName: UpgradePlan inputVariables: context: Customer called to upgrade their current plan to GOLD customer_info: current_plan: SILVER customer_since: '2020-01-01' channelType: digital responses: '200': description: >- Successfully triggered the bot to analyze and respond to a conversation content: application/json: schema: type: object description: >- Conversation identifier and message identifier if passed in the request properties: conversationId: type: string description: Internal conversation identifier from ASAPP example: 01BX5ZZKBKACTAV9WEVGEMMVS0 messageId: type: string description: Internal message identifier from ASAPP example: 01BX5ZZKBKACTAV9WEVGEMMVS1 '400': description: 400 - Bad request content: application/json: schema: description: Bad request response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 400-01 message: Bad request description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '401': description: 401 - Unauthorized content: application/json: schema: description: Unauthorized response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 401-01 message: Unauthorized description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '403': description: 403 - Forbidden content: application/json: schema: description: Forbidden response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 403-01 message: Forbidden Response description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '404': description: 404 - Not Found content: application/json: schema: description: Not Found response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 404-01 message: Not Found description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '409': description: 409 - Conflict content: application/json: schema: description: Conflict response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 409-01 message: Conflict description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '413': description: 413 - Request Entity Too Large content: application/json: schema: description: Request Entity Too Large response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 413-01 message: Request Entity Too Large description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '422': description: 422 - Unprocessable Entity content: application/json: schema: description: Unprocessable Entity response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 422-01 message: Unprocessable Entity description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '429': description: 429 - Too Many Requests content: application/json: schema: description: Too Many Requests response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 429-01 message: Too Many Requests description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '503': description: 503 - Service Unavailable content: application/json: schema: description: Service Unavailable response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 503-01 message: Service Unavailable description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message default: description: 500 - Internal Server Error content: application/json: schema: description: Default error response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 500-01 message: Internal server error description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message components: securitySchemes: API-ID: type: apiKey in: header name: asapp-api-id API-Secret: type: apiKey in: header name: asapp-api-secret ```` --- # Source: https://docs.asapp.com/agent-desk/integrations/android-sdk/android-sdk-release-notes.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Android SDK Release Notes The scrolling window below shows release notes for ASAPP's Android SDK. This content may also be viewed as a stand-alone webpage here: [https://docs-sdk.asapp.com/api/chatsdk/android/releasenotes](https://docs-sdk.asapp.com/api/chatsdk/android/releasenotes) --- # Source: https://docs.asapp.com/agent-desk/integrations/android-sdk.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Android SDK Overview > Learn how to integrate the ASAPP Android SDK into your application. You can integrate ASAPP's Android SDK into your application to provide a seamless messaging experience for your Android customers. ### Android Requirements ASAPP supports Android 5.0 (API level 21) and up. The SDK currently targets API level 30. ASAPP distributes the library via a Maven repository and you can import it with Gradle. ASAPP wrote the SDK in Kotlin. You can also use it if you developed your application in Java. ## Getting Started To get started with Android SDK, you need to: 1. [Gather Required Information](#1-gather-required-information "1. Gather Required Information") 2. [Install the SDK](#2-install-the-sdk "2. Install the SDK") 3. [Configure the SDK](#3-configure-the-sdk "3. Configure the SDK") 4. [Open Chat](#4-open-chat "4. Open Chat") ### 1. Gather Required Information Before downloading and installing the SDK, please make sure you have the following information. Contact your Implementation Manager at ASAPP if you have any questions. | | | | :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | App ID | Also known as the "Company Marker", assigned by ASAPP. | | API Host Name | The fully-qualified domain name used by the SDK to communicate with ASAPP's API. Provided by ASAPP and subject to change based on the stage of implementation. | | Region Code | The ISO 3166-1 alpha-2 code for the region of the implementation, provided by ASAPP. | | Supported Languages | Your app's supported languages, in order of preference, as an array of language tag strings. Strings can be in the format "\{ISO 639-1 Code}-\{ISO 3166-1 Code}" or "\{ISO 639-1 Code}", such as "en-us" or "en". Defaults to \["en"]. | | Client Secret | This can be an empty or random string\* until otherwise notified by ASAPP. | | User Identifier | A username or similar value used to identify and authenticate the customer, provided by the Customer Company. | | Authentication Token | A password-equivalent value, which may or may not expire, used to authenticate the customer that is provided by the Customer Company. | \* In the future, the ASAPP-provided client secret will be a string that authorizes the integrated SDK to call the ASAPP API in production. ASAPP recommends fetching this string from a server and storing it securely using Secure Storage; however, as it is one of many layers of security, you can hard-code the client secret. ### 2. Install the SDK ASAPP distributes the library via a Maven repository and you can import it with Gradle. First, add the ASAPP Maven repository to the top-level `build.gradle` file of your project: ```groovy theme={null} repositories { maven { url "https://packages.asapp.com/chat/sdk/android" } } ``` Then, add the SDK to your application dependencies: `implementation 'com.asapp.chatsdk:chat-sdk:'` Please check the latest Chat SDK version in the [repository](https://gitlab.com/asappinc/public/mobile-sdk/android/-/packages) or [release notes](https://docs-sdk.asapp.com/api/chatsdk/android/releasenotes/). At this point, sync and rebuild your project to make sure you have successfully imported all dependencies. You can also validate the authenticity of the downloaded dependency by following these steps. ### Validate Android SDK Authenticity You can verify the authenticity of the SDK and make sure that ASAPP generated the binary. The GPG signature is the standard way ASAPP handles Java binaries when this is a requirement. #### Setup First, download the ASAPP public key [from here](https://docs-sdk.asapp.com/api/chatsdk/android/security/asapp_public.gpg). ```json theme={null} wget -O asapp_public_key.asc https://docs-sdk.asapp.com/api/chatsdk/android/security/asapp_public.gpg ``` #### Verify File Signature Use the console GPG command to import the key: ```json theme={null} gpg --import asapp_public_key.asc ``` You can verify that the public key was imported via `gpg --list-keys`. Download the ASC file directly from [our repository](https://gitlab.com/asappinc/public/mobile-sdk/android/-/packages). Finally, you can verify the Chat SDK AAR and associated ASC files like so: ```json theme={null} gpg --verify chat-sdk-.aar.asc chat-sdk-.aar ``` ### 3. Configure the SDK Use the code below to create a configuration, and initialize the SDK with it. You must pass your `Application` instance. Refer to the aforementioned [required information](/agent-desk/integrations/ios-sdk/ios-quick-start). ASAPP recommends you initialize the SDK in your `Application.onCreate`. ```json theme={null} import com.asapp.chatsdk.ASAPP import com.asapp.chatsdk.ASAPPConfig val asappConfig = ASAPPConfig( appId = "my-app-id", apiHostName = "my-hostname.test.asapp.com", clientSecret = "my-secret", enableSDKCrashlytics = true) ASAPP.init(application = this, config = asappConfig) ``` In case, you are facing compile issue after setting enableSDKCrashlytics to true, perform the following steps 1. Add (if not present) the following plugins to your app module's build.gradle.kts or build.gradle: * id("com.google.gms.google-services") * id("com.google.firebase.crashlytics") 2. Add (if not present) the Firebase BOM to your app's dependencies block:" * implementation(platform("com.google.firebase:firebase-bom:29.0.0")) 3. Create a dummy google-services.json and place it in location: \$APP\_DIR/google-services.json. The SDK should only be initialized once and it is possible to update the configuration at runtime. ### 4. Open Chat Once the SDK has been configured and initialized, you can open chat. To do so, use the `openChat(context: Context)` function which will start a new Activity: ```kotlin theme={null} ASAPP.instance.openChat(context = this) ``` Once the chat interface is open, you should see an initial state similar to the one below: ## Next Steps --- # Source: https://docs.asapp.com/agent-desk/integrations/chat-instead/android.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Android ## Requirements Chat Instead requires ASAPP Android Chat SDK 8.0.0 or later, and a valid phone number. Before you proceed, make sure you configure it [correctly](/agent-desk/integrations/android-sdk). ## Phone Formats Chat Instead accepts a wide variety of formats. See [tools.ietf.org/html/rfc3966](https://tools.ietf.org/html/rfc3966) for the precise definition. For example, Chat Instead accepts: "+1 (555) 555-5555" and "555-555-5555". ## Getting Started There are two ways to add Chat Instead. The easiest way is to add the `ASAPPChatInsteadButton` to the layout and call the `ASAPPChatInsteadButton.init`. Alternatively, you can manage the lifecycle yourself. ### 1. Add an ASAPPChatInsteadButton You can add this button to any layout, like any other [AppCompatButton](https://developer.android.com/reference/androidx/appcompat/widget/AppCompatButton). ```json theme={null} ``` After that, be sure to call the `ASAPPChatInsteadButton.init` method. Only the phone number is mandatory. Optionally, you can overwrite the `ASAPPChatInsteadButton.onChannel` and the `ASAPPChatInsteadButton.onError` properties of the button. ### 2. Manual Setup of ASAPPChatInstead 1. Initialize Chat Instead Somewhere after the `ASAPP.init` call: ```json theme={null} val chatInstead = ASAPPChatInstead.create(phoneNumber) ``` to initialize Chat Instead. Depending on cache, this will trigger a network call so channels are "immediately" available to the user once the fragment is displayed. Along with an optional header and a chat icon, you can pass callbacks to be notified when a channel is tapped or an error on a channel happens. ASAPP makes both callbacks after Chat Instead tries to act on the tap. 2. Display Channels With the instance returned by `ASAPPChatInstead.init`, call `ASAPPChatInstead.show` whenever you want to display the [BottomSheetDialogFragment](https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetDialogFragment?hl=en). Depending on cache, this might show a loading state. 3. Clear Chat Instead (optional) You can interrupt the Chat Instead initial network call, if you call `ASAPPChatInstead.clear`. ASAPP advises you to add the call `onDestroy` for Activities and `onDetachedFromWindow` for Fragments. If you call `ASAPPChatInstead.clear` after you create the [BottomSheetDialogFragment](https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetDialogFragment?hl=en) view, it has no effect. ## Error Handling and Debugging In the case of problems, look for logs with the "ASAPPChatInstead" tag. Be sure to call `ASAPP.setDebugLoggingEnabled(true)` to enable the logs. Alternatively, you can set callbacks with `ASAPPChatInstead.init`. ### Troubleshoot Chat Instead Errors #### Crash Caused by UnsupportedOperationException when Displaying the Fragment This occurs whenever someone does not define `asapp_primary` in the style that the calling Activity uses. Please refer to **Customization > Colors**. #### "Unknown Channel" in the Log or the onError Callback Talk to your Implementation Manager at ASAPP. ASAPP's Backend sent a channel we don't know how to handle. You might need to upgrade the Android SDK version. #### "Unknown Error" in the Log Talk to your Implementation Manager at ASAPP. This might be a bug. Please attach logs and reproduction steps. #### "Activity Context Not Found" in the Log It means you are not sending the right context at `ASAPPChatInstead.show`. ## Tablet and Landscape Support Chat Instead supports these configurations seamlessly. ## Customization ### Header By default, Chat Instead uses the text in `R.string.asapp_chat_instead_default_header`. You can send a different string when initializing Chat Instead, but the ASAPP Backend overwrites it if the call succeeds. ### Chat Icon You can customize the SDK Chat channel icon. By default, the system tints it with `asapp_primary` and `asapp_on_primary`. If you customize the icon, make sure to test how it looks in Night Mode (a.k.a. Dark Mode). ### Colors Chat Instead uses the ASAPP text styles and colors. For more information on how to customize, go to [Customization](../android-sdk/customization "Customization"). ## Remote settings Chat Instead receives configuration information from ASAPP's Backend (BE), in addition to the channels to display. The configuration enables/disables the feature and selects the device type (mobile, tablet, none). Contact your Implementation Manager at ASAPP if you have any questions. It's important to know how the BE affects customization. If you provide a header, the BE overwrites it. On the other hand, the BE cannot overwrite the phone number. ## Cache Chat Instead will temporarily cache the displayed channels to provide a better user experience. The cache is warmed at instantiation. The information persists through phone restarts. As usual, it does not survive an uninstall or a "clear cache" in App info. --- # Source: https://docs.asapp.com/generativeagent/configuring/tasks-and-functions/api-functions.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # API Functions > Connect to your existing APIs to fetch data or perform actions with API Functions. API Functions enable GenerativeAgent to call your existing APIs to fetch data or perform actions. They are the most common function type for integrating with backend systems and allow your agent to interact with your existing infrastructure without requiring additional development work. By using an API Function, you can: * Connect to your existing APIs without creating new simplified interfaces * Fetch real-time data from your backend systems * Perform actions like creating records, updating accounts, or processing transactions * Leverage your current infrastructure without additional development To create an API function: 1. [Create a function](#step-1-create-a-new-function) 2. [Select an API connection](#step-2-select-an-api-connection) 3. [Specify name and purpose](#step-3-specify-the-name-and-purpose-of-the-function) 4. [Configure optional settings](#step-4-configure-optional-settings) 5. [Use the function in a task](#step-5-using-the-api-function-in-a-task) ## Step 1: Create a New Function Navigate to the Functions page and click "Create Function." 1. Select "Connect to an API" and click "Next: Choose an API" ## Step 2: Select an API Connection Under "Choose an API": 1. Select one of your existing [API connections](/generativeagent/configuring/connect-apis) 2. Click "Next: Function details" If you don't have any API connections yet, you'll need to [create one](/generativeagent/configuring/connect-apis) first or create a [Mock API Function](/generativeagent/configuring/tasks-and-functions/mock-api). ## Step 3: Specify the Name and Purpose of the Function * **Function Name**: Provide a concise, unique name, using underscores (e.g., `get_account_balance`). By default, the function name will be the same as the API connection name. * **Function Purpose**: Briefly describe what the function does (e.g., "Retrieves the current account balance for a customer"). * GenerativeAgent uses this description to determine if/when it should call the function. Click "Create Function" to create the function. You'll be taken to the function detail page where you can configure additional settings. ## Step 4: Configure Optional Settings After creating the function, you can configure additional fields to enhance the function's behavior: * **Message before sending**: Display a message to the user before calling the API * **Confirmation message**: Show confirmation after successful API calls * **Reference variables**: The API function response will be part of the conversation context for GenerativeAgent to reference, but you can optionally specify a specific field as a reference variable to either reference it in a [Conditional Template](/generativeagent/configuring/tasks-and-functions/conditional-templates), or to include it when you call a [System Transfer Function](/generativeagent/configuring/tasks-and-functions/system-transfer). The function detail page shows the function configuration and any available API endpoints. The function will call the real API during interactions. Make sure your API connection is properly configured and accessible. ## Step 5: Using the API Function in a Task Once you have created your API function, you must add the function to the task's list of available functions for GenerativeAgent to use it. GenerativeAgent will call the function when it determines the API call is needed to complete the task. Here's how the function works within a task and conversation flow: 1. GenerativeAgent analyzes the user's request and determines if it needs an API call 2. (Optional) The system can display a "Message before Sending" to the user 3. GenerativeAgent calls the API function with the appropriate parameters 4. The system processes the API response and can use it to generate a response to the user 5. (Optional) The system can display a "Confirmation Message" after successful API calls ```jinja theme={null} # Objective Help a customer check their account balance and recent transactions. # Context - Customer wants to know their current balance - They may also want to see recent transactions # Instructions 1. **Gather Account Information:** - Ask for the customer's account number or phone number - Store "account_number" once provided 2. **Check Account Balance:** - Call the `get_account_balance` function with the account number - Display the current balance to the customer 3. **Show Recent Transactions (if requested):** - If the customer asks about recent activity, call the `get_recent_transactions` function - Display the transaction history in a user-friendly format ``` ## Next Steps Learn how to create and configure API connections for your functions. Start with mock APIs for testing before connecting to real systems. Learn how to store and manipulate conversation data with Set Variable Functions. Test your API functions in real-time with the Previewer tool. --- # Source: https://docs.asapp.com/agent-desk/digital-agent-desk/api-integration.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # API Integration > Learn how to connect the Digital Agent Desk to your backend systems. ASAPP integrates with your APIs to provide customers and agents with richer and more personalized interactions. ASAPP accomplishes this by making real-time backend calls to customer APIs, providing customers with current, up-to-date information. Customers must expose relevant APIs securely for ASAPP to make server-to-server calls. ## Authentication Customers should secure their APIs with authentication mechanisms, addressing both Customer Authentication and API Authentication. ### API Authentication on behalf of the User ASAPP leverages customers' existing mechanisms for authenticating their customers, which should ideally remain consistent across different channels. Systems should issue identifiers with short expiration times while allowing for good user experience without requiring customers to authenticate multiple times during a session. * **Cookie-based Authentication**: Users post login credentials to the customer's server and receive a signed cookie. The server stores the cookie and places a copy in the browser for use in subsequent interactions during the session. However, teams typically prefer token-based approaches where possible. * **Token-based Authentication:** Users post login credentials to the customer's server and receive a signed JSON Web Token (JWT). The server does not store this token, making all interactions fully stateless. All client requests include the JWT, which only the server can decode to authenticate every request. For more information on generating and signing JSON Web Tokens, refer to [https://jwt.io/](https://jwt.io/). **API Endpoint**: `POST /customer_authenticate` **Request** ```json theme={null} curl -X POST https://api.example.com/auth/customer_authenticate \ -H 'cache-control: no-cache' \ -d 'username=&password=' ``` **Response** ```json theme={null} { "issued_at" : "1570733606449", "JWT" : "", "expires_in" : "28799" } ``` ASAPP requires direct access to the "customer\_authenticate" API to retrieve JWTs/cookies programmatically for testing. #### Communicating Customer Identifier with ASAPP Customers can implement any mechanism to authenticate their users, as long as they can pass the identifier (cookie, JWT, etc.) to ASAPP. The methods for passing this value to ASAPP depend on the chat channel used: [Web](/agent-desk/integrations/web-sdk/web-authentication), [iOS](/agent-desk/integrations/ios-sdk/user-authentication), or [Android](/agent-desk/integrations/android-sdk/user-authentication). #### Customer Identifier Requirements ASAPP uses this customer identifier as a pass-through value by including it as an HTTP Header or in the request body when requesting customer data from backend APIs. Since the Customer Identifier is the only data ASAPP uses to identify users, it must adhere to the following requirements: * **Unique**: ASAPP will associate every customer chat with this id allowing ASAPP to tie chats from different channels into one single conversation. It is imperative that the Customer Identifier be unique per customer. * **Consistent**: The Customer Identifier should remain consistent so that even if the customer returns after a significant amount of time, we are able to identify the customer. * **Opaque**: The Customer Identifier by itself should not contain any customer Personally Identifiable Information (PII). It should be hashed, encoded and/or encrypted so that when used by itself, it is of no value. ### API Authentication using System-level Credential Customers can secure backend APIs by restricting client access to specific resources for limited time periods. Teams can implement this using various mechanisms like OAuth 2.0, API Keys, or System Credentials. This section details OAuth using a Client Credentials Grant, which works well for server-to-server communication. #### Client Credentials Grant In this mechanism, the client sends a HTTP POST request with the following parameters in return for an access\_token. * **grant\_type** * **client\_id** * **client\_secret** **API Endpoint**: `POST /access_token` **Request** ```json theme={null} curl -X POST https://api.example.com/oauth/access_token?grant_type=client_credentials \ -H 'cache-control: no-cache' \ -H 'content-type: application/x-www-form-urlencoded' \ -d 'client_id=&client_secret=' ``` **Response** ```json theme={null} { "token_type" : "Bearer", "issued_at" : "1570733606449", "client_id" : “”, "access_token" : "", "scope" : "client_credentials", "expires_in" : "28799" } ``` ### API Authorization Customers can also use API keys to provide authorization to specific APIs. API keys are passed in the HTTP header along with the authentication token. **API Endpoint:** POST /getprofile **Request** ```json theme={null} curl -X POST https://api.example.com/account/getprofile -H 'Authorization: Bearer ' \ -H 'customer-auth: JWT ' \ -H 'content-type: application/json' \ -H 'api-key: ' \ ``` --- # Source: https://docs.asapp.com/agent-desk/integrations/apple-messages-for-business.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Apple Messages for Business Apple Messages for Business is a service that enables your organization to communicate directly with your customers through your Customer Service Platform (CSP), which in this case will be ASAPP, using the Apple Messages for Business app. All third party specifications are subject to change by Apple. As such, this section may become out-of-date. ASAPP will always attempt to use the most up-to-date third-party documentation. If you come across any errors or out-of-date content, please contact your ASAPP representative. ## Quick Start Guide 1. Register for an Apple Messages for Business account 2. Specify Entry Points 3. Complete User Experience Review 4. Determine Launch & Throttling Strategy ### Register for an Apple Messages for Business Account Before integrating with ASAPP's Apple Messages for Business adapter, you must register an account with Apple. See [Apple Messages for Business Getting Started](https://register.apple.com/resources/messages/messaging-documentation/register-your-acct#getting-started) documentation for more details. ### Specify Entry Points Entry points are where your customers start conversations with your business. You can select from Apple and ASAPP entry points. #### Apple Entry Points Apple supports multiple entry points for customers to engage using the Messages app. See [Apple Messages for Business Entry Points](https://register.apple.com/resources/messages/messaging-documentation/customer-journey#entry-points) documentation for more information. #### ASAPP Entry Point ASAPP supports the Chat Instead entry point. See the [Chat Instead](/agent-desk/integrations/chat-instead "Chat Instead") documentation for more information. ### Complete User Experience Review Apple requires a Brand Experience QA review before you can launch the channel. Please work with your Engagement Manager to prepare and schedule for the QA review. See the [Apple User Experience Review](https://register.apple.com/resources/messages/messaging-documentation/pass-apple-qa) documentation for more information. ### Determine Launch & Throttling Strategy Depending on the entry points configured, your Engagement Manager will share launch best practices and throttling strategies. ## Customer Authentication Apple Messages for Business supports Customer Authentication, which allows for a better and personalized customer experience. You can implement Authentication using OAuth. ### OAuth * Requires OAuth 2.0 implemented by customer * No support for biometric (fingerprint/Face Id) authentication on device * Does not require native iOS app User Authentication in Apple Messages for Business can utilize a standards-based approach using an OAuth 2.0 flow with additional key validation and OAuth token encryption steps. This approach requires customers to implement and host a login page that Apple Messages for Business will invoke to authenticate the user. Users will have to sign-in with their credentials every time their OAuth token expires. Additional steps are required to support authorization for users with devices running versions older than iOS 15. Consult your ASAPP account team for more information. #### Latest Authentication Flow #### Old Authentication Flow ASAPP requires the following customer functionalities to support the older authentication flow: * An OAuth 2.0 login flow, including a login page that supports form autofill. This page must be Apple-compliant. See the [Authentication Message](https://register.apple.com/resources/messages/msp-rest-api/type-interactive#authentication-message) documentation for more details. * Provide an API endpoint for ASAPP to obtain an external user identifier. This should be the same identifier that is supplied via the ASAPP web and mobile SDKs as the CustomerId. * Provide an endpoint through which to obtain an access token by supplying an authcode. This endpoint must support URL encoded parameters. * Provide an endpoint that can accepted POST requests in the following format: ```json theme={null} Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=xxxx &client_id=yyyy&client_secret=zzzz where: xxxx=authorization_code value yyyy=client_id value zzzz=client_secret value ``` The authorization request from the device to the customer's login page will always contain response\_type, client\_id, redirect\_uri, scope and state and will be application/x-www-form-urlencoded Also note that the older authentication flow is backwards-compatible for iOS versions 16+. --- # Source: https://docs.asapp.com/generativeagent/human-in-the-loop/approver-mode.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Approver Mode > Learn how human agents review and refine generated responses to ensure safe, accurate, and on-brand customer interactions. Human-in-the-Loop Agent (HILA) **Approver Mode** is a powerful capability that enables human agents to supervise and refine GenerativeAgent responses in real time before they are delivered to customers. This information is used to **fine-tune GenerativeAgent** over time. This approach ensures safe, on-brand interactions and accelerates the training of AI systems to sound like your best support agents, making it ideal for piloting new intents and achieving high-quality automated support. Approver Mode works similarly to regular HILA: GenerativeAgent creates a ticket for a HILA queue, where a HILA can review the ticket. However, instead of providing guidance and information, the HILA approves or modifies GenerativeAgent's messages. ## Set Up Approver Mode ASAPP offers seamless integration into your existing agent desk through an iframe-based HILA application. HILAs operate from dedicated queues within your platform, receiving GenerativeAgent consultation requests directly. This ensures they work within a familiar interface, while you retain full control over routing and assignment. To set up HILA in your environment, contact your ASAPP Implementation Manager. HILAs are assigned tickets based on the routing and assignment configurations in your support platform. If no HILA is assigned within the configurable threshold (default: 60 seconds), the case is automatically escalated to a live agent. Reach out to your ASAPP account team to enable Approver Mode for your account and configure the Administrator settings. HILA in Approver Mode cannot be tried out in Previewer. ### Administrator Controls There are several settings that can be configured, particularly to ensure end customers receive quick responses: * **Auto-accept Timeout:** The system automatically approves responses after a configurable timeout (default: 30 seconds) to ensure the customer remains engaged if the HILA is inactive * **Agent Assignment Timeout:** If no HILA is assigned within a configurable timeout (default: 60 seconds), the conversation escalates to a live agent * **Task-level Control:** Define which tasks require complete supervision through Approver Mode * **Escalation Message:** When HILA initiates an escalation, the system sends a configurable message to the customer, informing them that their conversation will be handed over to a live agent These safeguards ensure that customers never wait long and always receive a human-verified message. ## Approver Mode Workflow The Approver Mode workflow follows the same process as regular HILA, with one key difference: instead of providing guidance and information to GenerativeAgent, agents approve or modify the messages that GenerativeAgent has already generated. Your support platform assigns tickets to HILAs based on the routing and assignment configurations. If the system does not assign a HILA within the configurable threshold (default: 60 seconds), the system automatically escalates the case to a live agent. The system presents HILAs with key information to help them answer GenerativeAgent query: Approver Mode Interface The HILA application includes: * **Transcript:** Complete history of the customer interaction before GenerativeAgent raised the ticket * **Context:** Summarized view of key customer intents and topics for quick understanding * **Customer information:** Details such as customer name and account data if authenticated * **Conversation thread:** Real-time view of the approver phase showing all approved messages, edits, and system messages * **Assignment timer:** Tracks how long the assigned HILA has worked on the ticket Unlike regular HILA, where agents provide guidance, in Approver Mode, HILA can do one of four things when a GenerativeAgent utterance comes for approval: 1. **Accept** the utterance as the most appropriate next response to the customer 2. **Review** the utterance and make necessary changes before sending it to the customer 3. **Transfer** if the situation requires escalation to a live agent for deeper support 4. **End** the ticket if GenerativeAgent resolves the conversation or escalates Based on the HILA's action, GenerativeAgent will continue the conversation and reach out to HILA (Approver Mode) for subsequent messages. HILA and GenerativeAgent conversations need to be quick since there is a customer waiting for resolution on the other side. To support this, there are **real-time notifications** to ensure that HILA doesn't miss any new messages from GenerativeAgent. ## What Can Be Fine-Tuned? Using Approver Mode, every agent correction becomes valuable feedback to improve GenerativeAgent over time. Today, we primarily use these edits to align GenerativeAgent's responses with your brand voice and the communication style of your best agents. Additionally, agent interactions generate insights that inform future improvements, such as: * **Knowledge Access:** Identify which APIs, knowledge base articles, or system data agents reference, helping refine task instructions * **Content Gaps & Escalation Patterns:** Spot where agents frequently intervene or escalate, highlighting areas where task instructions or fallback behavior can be improved These signals help build toward more confident, autonomous operation over time. ## Next Steps After setting up Approver Mode, you can enhance your human-in-the-loop capabilities: Learn about the core HILA capabilities and how to incorporate it into your use cases. Learn how to improve GenerativeAgent's tasks and functions. Learn how to configure GenerativeAgent tasks for your use case. Follow steps and best practices to launch your GenerativeAgent deployment in production. --- # Source: https://docs.asapp.com/reporting/asapp-messaging-feeds.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # ASAPP Messaging Feed Schemas The tables below provide detailed information regarding the schema for exported data files available to you for ASAPP Messaging. ### Table: admin\_activity The admin\_activity table tracks ONLINE/OFFLINE statuses and logged in time in seconds for agents who use Admin. **Sync Time:** 1h **Unique Condition:** rep\_id, status\_description, status\_start\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :-------------------- | :----------- | :---------------------------------------------------- | :------------------ | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2020-11-10 00:00:00 | 2020-11-10 00:00:00 | no | | | | | | rep\_name | varchar(191) | Name of agent | John | | | 2020-11-10 00:00:00 | 2020-11-10 00:00:00 | no | | | | | | status\_description | varchar | Indicates status of the agent. | ONLINE | | | 2020-11-10 00:00:00 | 2020-11-10 00:00:00 | no | | | | | | status\_start\_ts | datetime | Timestamp at which this agent entered that status. | 2018-06-10 14:23:00 | | | 2020-11-10 00:00:00 | 2020-11-10 00:00:00 | no | | | | | | status\_end\_ts | datetime | Timestamp at which this agent exited that status. | 2018-06-10 14:23:00 | | | 2020-11-10 00:00:00 | 2020-11-10 00:00:00 | no | | | | | | status\_time\_seconds | double | Time in seconds that the agents spent in that status. | 2353.23 | | | 2020-11-10 00:00:00 | 2020-11-10 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2025-01-09 00:00:00 | 2025-01-09 00:00:00 | no | | | | | ### Table: agent\_journey\_rep\_event\_frequency Aggregated counts of various agent journey event types partitioned by rep\_id **Sync Time:** 1d **Unique Condition:** primary-key: rep\_id, event\_type, instance\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :-------------------- | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2022-01-31 00:00:00 | 2022-01-31 00:00:00 | no | | | | | | company\_marker | varchar(191) | The ASAPP company marker. | spear, aa | | | 2022-01-31 00:00:00 | 2022-01-31 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2022-01-31 00:00:00 | 2022-01-31 00:00:00 | no | | | | | | event\_type | varchar(191) | agent journey event type on record | CUSTOMER\_TIMEOUT, TEXT\_MESSAGE | | | 2022-01-31 00:00:00 | 2022-01-31 00:00:00 | no | | | | | | event\_count | bigint | count of the agent journey event type on record | | | | 2022-01-31 00:00:00 | 2022-01-31 00:00:00 | no | | | | | | disconnected\_count | bigint | number of times that a rep disconnected for less than 1 hour | | | | 2022-01-31 00:00:00 | 2022-01-31 00:00:00 | no | | | | | | disconnected\_seconds | bigint | cumulative number of seconds that a rep disconnected for less than 1 hour | | | | 2022-01-31 00:00:00 | 2022-01-31 00:00:00 | no | | | | | ### Table: autopilot\_flow This table contains factual data about autopilot flow. **Sync Time:** 1h **Unique Condition:** issue\_id, form\_start\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | rep\_assigned\_ts | timestamp without time zone | | | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | form\_start\_ts | timestamp without time zone | Timestamp of autopilot form/flow being recommended by MLE or timestamp of flow sent from quick send. issue\_id + form\_recommended\_event\_ts should be unique | | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | form\_dismissed\_event\_ts | timestamp without time zone | Timestamp of recommended autopilot form being dismissed. | | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | form\_presented\_event\_ts | timestamp without time zone | Timestamp the autopilot form being presented to end user. | | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | form\_submitted\_event\_ts | timestamp without time zone | Timestamp the autopilot form being submitted by end user | | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | flow\_id | varchar(255) | An ASAPP identifier assigned to a particular flow executed during a customer event or request. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | flow\_name | varchar(255) | The ASAPP text name for a given flow which was executed during a customer event or request. | FirstChatMessage, AccountNumberFlow | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | form\_start\_from | character varying(191) | How the flow is being sent by the agent. manual: sent manually from the quick send dropdown in desk accept: sent by accept recommendation by ML server | | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | is\_secure\_form | boolean | Is this a secure form flow. | false | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | queue\_id | integer | The ASAPP queue identifier which the issue was placed. | 210001 | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | asapp\_mode | varchar(191) | Mode of the desktop that the rep is logged into (CHAT or VOICE). | CHAT, VOICE | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2022-03-09 00:00:00 | 2022-03-09 00:00:00 | no | | | | | ### Table: convos\_intents The convos\_intents table lists the current state for intent and utterance information associated with a conversation/issue that had events within the identified 15 minute time window. This table will include unended conversations. **Sync Time:** 1h **Unique Condition:** issue\_id **Ordering Precedence:** instance\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------ | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_agent\_id | varchar(191) | deprecated: 2019-09-25 | 123008 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_utterance\_ts | varchar(255) | The timestamp of the first customer utterance for an issue. | 2018-09-05 19:58:06 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_utterance\_text | varchar(255) | Time of the first customer message in the conversation. | 'Pay my bill', 'Check service availability' | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_intent\_code | varchar(255) | Code name used for classifying customer queries in first interaction. | PAYBILL, COVERAGE | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_intent\_code\_alt | varchar(255) | Alternative second best code name used for classifying customer queries in first interaction. | PAYBILL, COVERAGE | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | final\_intent\_code | varchar(255) | The final code name classifying the customer's query, based on the flow navigated; defaults to the first interaction code if no flow was followed. | PAYBILL, COVERAGE | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | intent\_path | varchar(255) | A comma-separated list of all intent codes from the customer’s flow navigation. If no flow was navigated, this will match the first intent code. | OUTAGE,CANT\_CONNECT | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | disambig\_count | bigint | The number of times a disambiguation event was presented for an issue. | 2 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | ftd\_visit | boolean | Indicates whether free-text disambiguation was used to help the customer present a clearer intent, based on the number of texts sent to AI. | true, false | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | faq\_id | varchar(255) | The last FAQ identifier presented for an issue. | FORGOT\_LOGIN\_faq | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | final\_action\_destination | varchar(255) | The last deep-link URL clicked during the issue resolution process. | asapp-pil://acme/JSONataDeepLink | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | is\_first\_intent\_correct | boolean | Indicates whether the initial intent associated with the chat was correct, based on feedback from the agent. | true, false | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | first\_rep\_id | varchar(191) | The first ASAPP rep/agent identifier found in a window of time. | 123008 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: convos\_intents\_ended The convos\_intents\_ended table lists the current state for intent and utterance information associated with a conversation/issue that have had events within the identified 15 minute time window. This table will filter out unended conversations. **Sync Time:** 1h **Unique Condition:** issue\_id **Ordering Precedence:** instance\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-11-07 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | first\_agent\_id | varchar(191) | deprecated: 2019-09-25 | 123008 | | | 2018-11-07 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_utterance\_ts | varchar(255) | Timestamp of the first customer message in the conversation. | 2018-09-05 19:58:06T00:01:16.203000+00:00 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_utterance\_text | varchar(255) | First message from the customer. | I need to pay my bill. | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_intent\_code | varchar(255) | Code name which are used for classifying customer queries in first interaction | PAYBILL | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_intent\_code\_alt | varchar(255) | Alternative second best code name used for classifying customer queries in first interaction. | PAYBILL | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | final\_intent\_code | varchar(255) | The final code name classifying the customer's query, based on the flow navigated; defaults to the first interaction code if no flow was followed. | PAYBILL | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | intent\_path | varchar(255) | A comma-separated list of all intent codes from the customer’s flow navigation. If no flow was navigated, this will match the first intent code. | OUTAGE, CANT\_CONNECT | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | disambig\_count | bigint | The number of times a disambiguation event was presented for an issue. | 2 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | ftd\_visit | boolean | Indicates whether free-text disambiguation was used to help the customer present a clearer intent, based on the number of texts sent to AI. | false, true | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | faq\_id | varchar(255) | The last faq-id presented for an issue. | FORGOT\_LOGIN\_faq | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | final\_action\_destination | varchar(255) | The last deep-link URL clicked during the issue resolution process. | asapp-pil://acme-mobile/protection-plan-features | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | is\_first\_intent\_correct | boolean | Indicates whether the initial intent associated with the chat was correct, based on feedback from the agent. | true, false | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | first\_rep\_id | varchar(191) | The first ASAPP rep/agent identifier found in a window of time. | 123008 | | | 2018-11-07 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: convos\_metadata This convos\_metadata table contains data associated with a conversation/ issue during a specific 15 minute window. This table will include data from unended conversations. Expect to see columns containing the app\_version, the conversation\_end timestamp and whether it was escalated to chat or not. **Sync Time:** 1h **Unique Condition:** issue\_id **Ordering Precedence:** last\_event\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :-------------------------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | first\_utterance\_ts | timestamp | Timestamp of the first customer message in the conversation. | 2018-09-05 19:58:06 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | first\_utterance\_text | varchar(255) | First message content from the customer. | "Hello, please assist me" | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | issue\_created\_ts | timestamp | Timestamp of the "NEW\_ISSUE" event for an issue. | 2018-09-05 19:58:06 | | | 2019-10-15 00:00:00 | 2019-10-15 00:00:00 | no | | | | | | last\_event\_ts | timestamp | The timestamp of the last event for an issue. | 2018-09-05 19:58:06 | | | 2019-09-16 00:00:00 | 2019-09-16 00:00:00 | no | | | | | | last\_srs\_event\_ts | timestamp without time zone | Timestamp of the last bot assisted event. | 2018-09-05 19:58:06 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | conversation\_end\_ts | timestamp | Timestamp when the conversation ended. | 2018-09-05 19:58:06 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | session\_id | varchar(128) | The ASAPP session identifier. It is a uuid generated by the chat backend. Note: a session may contain several conversations. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | session\_type | character varying(255) | ASAPP session type. | asapp-uuid | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | session\_event\_type | character varying(255) | Basic type of the session event. | UPDATE, CREATE | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | internal\_session\_id | character varying(255) | Internal identifier for the ASAPP session. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | internal\_session\_type | character varying(255) | An ASAPP session type for internal use. | asapp-uuid | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | internal\_user\_identifier | varchar(255) | The ASAPP customer identifier while using the ASAPP system. This identifier may represent either a rep or a customer. Use the internal\_user\_type field to determine which type the identifier represents. | 123004 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | internal\_user\_session\_type | varchar(255) | The customer ASAPP session type. | customer | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | external\_session\_id | character varying(255) | Client-provided session identifier passed to the SDK during chat initialization. | 062906ff-3821-4b5d-9443-ed4fecbda129 | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_session\_type | character varying(255) | Client-provided session type passed to the SDK during chat initialization. | visitID | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_user\_id | varchar(255) | Customer identifier provided by the client, available if the customer is authenticated. | EECACBD227CCE91BAF5128DFF4FFDBEC | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_user\_type | varchar(255) | The type of external user identifier. | acme\_CUSTOMER\_ACCOUNT\_ID | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_issue\_id | character varying(255) | Client-provided issue identifier passed to the SDK (currently unused). | | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_channel | character varying(255) | Client-provided customer channel passed to the SDK (currently unused). | | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | customer\_id | bigint | ASAPP customer id | 1470001 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | escalated\_to\_chat | bigint | Flag indicating whether the issue was escalated to an agent. false, true | 1 | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | platform | varchar(255) | A value indicating which consumer platform was used. | ios, android, web | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | device\_type | varchar(255) | The last device type used by the customer for an issue. | mobile, tablet, desktop, watch, unknown | | | 2019-06-17 00:00:00 | 2019-06-17 00:00:00 | no | | | | | | first\_agent\_id | varchar(191) | deprecated: 2019-09-25 | 123008 | | | 2022-01-04 00:00:00 | 2022-01-04 00:00:00 | no | | | | | | last\_agent\_id | varchar(191) | deprecated: 2019-09-25 | 123008 | | | 2022-01-04 00:00:00 | 2022-01-04 00:00:00 | no | | | | | | external\_agent\_id | varchar(255) | deprecated: 2019-09-25 | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2022-01-04 00:00:00 | 2022-01-04 00:00:00 | no | | | | | | assigned\_to\_rep\_time | timestamp | Time when the issue was first assigned to a rep, if applicable. | 2018-09-05 19:58:06 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | disposition\_event\_type | varchar(255) | Event type indicating how the conversation ended. | resolved, unresolved, timeout | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | disposition\_ts | timestamp | Timestamp when the rep exited the issue or conversation. | 2018-09-05 19:58:06 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | termination\_event\_type | varchar(255) | Event type indicating the reason for conversation termination. | customer, agent, autoend | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | disposition\_notes | text | Notes added by the last rep after marking the chat as completed. | "The customer wanted to pay his bill. We successfully processed his payment." | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | ended\_resolved | integer | 1 if the rep marked the conversation resolved, 0 otherwise. | 1, 0 | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | ended\_unresolved | integer | 1 if the rep marked the conversation unresolved, 0 otherwise. | 0, 1 | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | ended\_timeout | integer | 1 if the customer timed out or abandoned chat, 0 otherwise. | 0, 1 | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | ended\_auto | integer | 1 if the rep did not disposition the issue and it was auto-ended. | 0, 1 | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | ended\_other | integer | 1 if the customer or rep terminated the issue but the rep didn't disposition the issue. | 0, 1 | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | app\_version\_asapp | varchar(255) | ASAPP API version used during customer event or request. | com.asapp.api\_api:-2f1a053f70c57f94752e7616b66f56d7bf1d6675 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | app\_version\_client | varchar(255) | ASAPP SDK version used during customer event or request. | web-sdk-4.0.0 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | session\_metadata | character varying(65535) | Additional metadata information about the session, provided by the client. | | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | last\_sequence\_id | integer | Last sequence identifier associated with the issue. | 115 | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | issue\_queue\_id | varchar(255) | Queue identifier associated with the issue. | 20001 | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | issue\_queue\_name | varchar(255) | Queue name associated with the issue. | acme-wireless-english | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | csat\_rating | double precision | Customer Satisfaction (CSAT) rating for the issue. | 400.0 | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | sentiment\_valence | character varying(50) | Sentiment of the issue. | Neutral, Negative | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | deep\_link\_queue | character varying(65535) | Deeplink queued for the issue. | | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | end\_srs\_selection | character varying(65535) | User selected button upon end\_srs. | | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | trigger\_link | VARCHAR | deprecated: 2020-04-25 aliases: current\_page\_url | | | | 2022-01-04 00:00:00 | 2022-01-04 00:00:00 | no | | | | | | auth\_state | varchar(3) | Flag indicating if the user is authenticated. | false, true | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | auth\_external\_token\_id | character varying(65535) | Encrypted user identifier, provided by the client system, associated with the first authentication event for an issue. | 82EFDDADC5466501443E3E61ED640162 | | | 2019-05-15 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | auth\_source | character varying(65535) | Source of the first authentication event for an issue. | ivr-url | | | 2019-05-15 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | auth\_external\_user\_type | character varying(65535) | External user type of the first authentication event for an issue. | ACME\_CUSTOMER\_ACCOUNT\_ID | | | 2019-05-15 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | auth\_external\_user\_id | character varying(65535) | User ID provided by the client for the first authentication event. | 9BE62CCD564D6982FF305DEBCEAABBB5 | | | 2019-05-15 00:00:00 | 2019-07-16 00:00:00 | no | | | | | | is\_review\_required | boolean | Flag indicates whether an admin must review this issue. data type: boolean data type: boolean | true, false | | | 2019-07-24 00:00:00 | 2019-07-24 00:00:00 | no | | | | | | mid\_issue\_auth\_ts | timestamp without time zone | Time when the user authenticates during the middle of an issue, | 2020-01-11 08:13:26.094 | | | 2019-07-24 00:00:00 | 2019-07-24 00:00:00 | no | | | | | | first\_rep\_id | varchar(191) | ASAPP provided identifier for the first rep involved with the issue. | 60001 | | | 2019-09-26 00:00:00 | 2019-09-26 00:00:00 | no | | | | | | last\_rep\_id | varchar(191) | ASAPP provided identifier for the last rep involved with the issue. | 60001 | | | 2019-09-26 00:00:00 | 2019-09-26 00:00:00 | no | | | | | | external\_rep\_id | varchar(255) | Client-provided identifier for the rep. | 0671018510 | | | 2019-09-26 00:00:00 | 2019-09-26 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | first\_voice\_customer\_state | varchar(255) | Initial state assigned to the customer when using voice. | IDENTIFIED | | | 2019-11-21 00:00:00 | 2019-11-21 00:00:00 | no | | | | | | first\_voice\_customer\_state\_ts | timestamp | 2020-01-11 08:13:26.094 | 2018-09-05 19:58:06 | | | 2019-11-21 00:00:00 | 2019-11-21 00:00:00 | no | | | | | | first\_voice\_identified\_customer\_state\_ts | timestamp | Time when the customer was first assigned an IDENTIFIED state. | 2020-01-11 08:13:26.094 | | | 2019-11-21 00:00:00 | 2019-11-21 00:00:00 | no | | | | | | first\_voice\_verified\_customer\_state\_ts | timestamp | Time when the customer was first assigned an VERIFIED state. | 2020-01-11 08:13:26.094 | | | 2019-11-21 00:00:00 | 2019-11-21 00:00:00 | no | | | | | | merged\_ts | timestamp | Time when the issue was merged into another issue. data type: timestamp | 2020-01-11 08:13:26.094 | | | 2019-12-28 00:00:00 | 2019-12-28 00:00:00 | no | | | | | | desk\_mode\_flag | bigint | Bitmap encodes if agent handled voice-issue ASAPP desk, had engagement with ASAPP desk. bitmap: 0: null, 1: 'VOICE', 2: 'DESK', 4: 'ENGAGEMENT', 8: 'INACTIVITY' NULL for non voice issues | 0, 1, 2, 5, 7 | | | 2020-02-19 00:00:00 | 2020-02-19 00:00:00 | no | | | | | | desk\_mode\_string | varchar(191) | Decodes the desk\_mode flag. Current possible values (Null, 'VOICE', 'VOICE\_DESK', 'VOICE\_DESK\_ENGAGEMENT','VOICE\_INACTIVITY'). NULL for non voice issues. | VOICE\_DESK | | | 2020-02-19 00:00:00 | 2020-02-19 00:00:00 | no | | | | | | current\_page\_url | varchar(2000) | URL link (stripped of parameters) that triggered the start chat event. Only applicable for WEB platforms. aliases: trigger\_link | https:[www.acme.corp/billing/viewbill](http://www.acme.corp/billing/viewbill) | | | 2020-04-24 00:00:00 | 2020-04-24 00:00:00 | no | | | | | | raw\_current\_page\_url | varchar(65535) | Full URL link (including parameters) that triggered the chat event. Only applicable for WEB platforms. aliases: raw\_trigger\_link | | | | 2020-04-25 00:00:00 | 2020-04-25 00:00:00 | no | | | | | | language\_code | VARCHAR(32) | Language code for the issue\_id | English | | | 2022-01-04 00:00:00 | 2022-01-04 00:00:00 | no | | | | | ### Table: convos\_metadata\_ended The convos\_metadata table contains data associated with a conversation/issue during a specific 15 minute window. Expect to see columns containing the app\_version, the conversation\_end timestamp and whether it was escalated to chat or not. This table will filter out data from unended conversations. This export removes any unended issues and any issues which contained no chat activity. **Sync Time:** 1h **Unique Condition:** issue\_id **Ordering Precedence:** last\_event\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :-------------------------------------------- | :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- | :--------- | :---- | :------------------------------- | :------------------------------- | :----- | :-- | :------------ | :----------- | :------------ | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | first\_utterance\_ts | timestamp | Timestamp of the first customer message in the conversation. | 2019-09-22T13:12:26.073000+00:00 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | first\_utterance\_text | varchar(65535) | First message content from the customer. | "Hello, please assist me" | | | 2019-01-11 00:00:00 | 2022-06-08 00:00:00 | no | | | | | | issue\_created\_ts | timestamp | Timestamp when the "NEW\_ISSUE" event occurred. | 2019-11-21T19:11:01.748000+00:00 | | | 2019-10-15 13:12:26.073000+00:00 | 2019-10-15 13:12:26.073000+00:00 | no | | | | | | last\_event\_ts | timestamp | Timestamp of the last event in the issue. | 2019-09-23T14:00:09.043000+00:00 | | | 2019-09-16 00:00:00 | 2019-09-16 00:00:00 | no | | | | | | last\_srs\_event\_ts | timestamp without time zone | Timestamp of the last bot assisted event. | 2019-09-22T13:12:26.131000+00:00 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | conversation\_end\_ts | timestamp | Timestamp when the conversation ended. | 2019-10-08T14:00:07.395000+00:00 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | session\_id | varchar(128) | The ASAPP session identifier. It is a uuid generated by the chat backend. Note: a session may contain several conversations. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | session\_type | character varying(255) | ASAPP session type. | asapp-uuid | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | session\_event\_type | character varying(255) | Basic type of the session event. | CREATE, UPDATE, DELETE | | | 2018-11-26 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | internal\_session\_id | character varying(255) | Internal identifier for the ASAPP session. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | internal\_session\_type | character varying(255) | An ASAPP session type for internal use. | asapp-uuid | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | internal\_user\_identifier | varchar(255) | The ASAPP customer identifier while using the ASAPP system. This identifier may represent either a rep or a customer. Use the internal\_user\_session\_type field to determine which type the identifier represents. | 123004 | | | 2018-11-26 00:00:00 | 2018-12-06 00:00:00 | no | | | | | | internal\_user\_session\_type | varchar(255) | The customer ASAPP session type. | customer | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | external\_session\_id | character varying(255) | Client-provided session identifier passed to the SDK during chat initialization. | 062906ff-3821-4b5d-9443-ed4fecbda129 | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_session\_type | character varying(255) | Client-provided session type passed to the SDK during chat initialization. | visitID | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_user\_id | varchar(255) | Customer identifier provided by the client, available if the customer is authenticated. | MjU0ZTRiMDQyNDVlNTcyNWNlOTljNmI1NDc2NWQzNzdmNmJmZTFjZDgyY2IwMzc3MDkwZDI5YmQwZDlkODJhNA== | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_user\_type | varchar(255) | The type of external user identifier. | acme\_CUSTOMER\_ACCOUNT\_ID | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_issue\_id | character varying(255) | Client-provided issue identifier passed to the SDK (currently unused). | | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | external\_channel | character varying(255) | Client-provided customer channel passed to the SDK (currently unused). | | | | 2018-11-26 00:00:00 | 2020-10-24 00:00:00 | no | | | | | | customer\_id | bigint | An ASAPP customer identifier. | 1470001 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | escalated\_to\_chat | bigint | 1 if an issue escalated to live chat, 0 if not | 1 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | platform | varchar(255) | The consumer platform in use. | ios, android, web, voice | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | device\_type | varchar(255) | The last device type used by the customer for an issue. | mobile, tablet, desktop, watch, unknown | | | 2019-06-17 00:00:00 | 2019-06-17 00:00:00 | no | | | | | | first\_agent\_id | varchar(191) | deprecated: 2019-09-25 | 123008 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | last\_agent\_id | varchar(191) | deprecated: 2019-09-25 | 123008 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | external\_agent\_id | varchar(255) | deprecated: 2019-09-25 | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | assigned\_to\_rep\_time | timestamp | Timestamp when the issue was first assigned to a rep, if applicable. | 2018-09-05 19:58:06T16:14:57.289000+00:00 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | disposition\_event\_type | varchar(255) | Event type indicating how the conversation ended. | resolved, unresolved, timeout | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | disposition\_ts | timestamp | Timestamp when the rep exited the issue or conversation. | 2018-09-05 19:58:06T16:14:57.289000+00:00 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | termination\_event\_type | varchar(255) | Event type indicating the reason for conversation termination. | customer, agent, autoend | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | disposition\_notes | text | Notes added by the last rep after marking the chat as completed. | "The customer wanted to pay his bill. We successfully processed his payment." | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | ended\_resolved | integer | Indicator (1 or 0) for whether the rep marked the conversation as resolved. | 1, 0 | | | 2019-04-30 00:00:00 | 2019-05-01 00:00:00 | no | | | | | | ended\_unresolved | integer | Indicator (1 or 0) for whether the rep marked the conversation as unresolved. | 0, 1 | | | 2019-04-30 00:00:00 | 2019-05-01 00:00:00 | no | | | | | | ended\_timeout | integer | Indicator (1 or 0) for whether the customer abandoned or timed out of the chat. | 0, 1 | | | 2019-04-30 00:00:00 | 2019-04-30 00:00:00 | no | | | | | | ended\_auto | integer | Indicator (1 or 0) for whether the issue was auto-ended without rep disposition. | 0, 1 | | | 2019-04-30 00:00:00 | 2019-05-01 00:00:00 | no | | | | | | ended\_other | integer | Indicator (1 or 0) for whether the customer or rep terminated the issue without rep disposition. | 0, 1 | | | 2019-04-30 00:00:00 | 2019-05-01 00:00:00 | no | | | | | | app\_version\_asapp | varchar(255) | ASAPP API version used during customer event or request. | com.asapp.api\_api:-b393f2d920bb74ce5bbc4174ac5748acff6e8643 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | app\_version\_client | varchar(255) | ASAPP SDK version used during customer event or request. | web-sdk-4.0.2 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | session\_metadata | character varying(65535) | Additional metadata information about the session, provided by the client. | | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | last\_sequence\_id | integer | Last sequence identifier associated with the issue. | 25 | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | issue\_queue\_id | varchar(255) | Queue identifier associated with the issue. | 2001 | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | issue\_queue\_name | varchar(255) | Queue name associated with the issue. | acme-mobile-english | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | csat\_rating | double precision | Customer Satisfaction (CSAT) rating for the issue. | 400.0 | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | sentiment\_valence | character varying(50) | Sentiment of the issue. | Neutral, Negative | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | deep\_link\_queue | character varying(65535) | Deeplink queued for the issue. | | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | end\_srs\_selection | character varying(65535) | User selected button option at the end of the session. | | | | 2019-01-11 00:00:00 | 2019-01-11 00:00:00 | no | | | | | | trigger\_link | VARCHAR | deprecated: 2020-04-25 aliases: current\_page\_url | | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | auth\_state | varchar(3) | Flag indicating if the user is authenticated. | 0, 1 | | | 2018-11-26 00:00:00 | 2018-11-26 00:00:00 | no | | | | | | auth\_external\_token\_id | character varying(65535) | A client provided field. Encrypted user ID from client system associated with the first authentication event for an issue. | 82EFDDADC5466501443E3E61ED640162 | | | 2019-05-15 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | auth\_source | character varying(65535) | The source of the first authentication event for an issue. | ivr-url | | | 2019-05-15 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | auth\_external\_user\_type | character varying(65535) | An external user type of the first authentication event for an issue. | ACME\_CUSTOMER\_ACCOUNT\_ID | | | 2019-05-15 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | auth\_external\_user\_id | character varying(65535) | External user ID provided by the client for the first authentication event. | 9BE62CCD564D6982FF305DEBCEAABBB5 | | | 2019-05-15 00:00:00 | 2019-07-16 00:00:00 | no | | | | | | is\_review\_required | boolean | Flag indicates whether an admin must review this issue. data type: boolean | true, false | | | 2019-07-24 00:00:00 | 2019-07-24 00:00:00 | no | | | | | | mid\_issue\_auth\_ts | timestamp without time zone | Time when the user authenticates during the middle of an issue. | 2020-01-18T03:43:41.414000+00:00 | | | 2019-07-24 00:00:00 | 2019-07-24 00:00:00 | no | | | | | | first\_rep\_id | varchar(191) | Identifier for the first rep involved with the issue. | 60001 | | | 2019-09-26 00:00:00 | 2019-09-26 00:00:00 | no | | | | | | last\_rep\_id | varchar(191) | Identifier for the last rep involved with the issue. | 60001 | | | 2019-09-26 00:00:00 | 2019-09-26 00:00:00 | no | | | | | | external\_rep\_id | varchar(255) | Client-provided identifier for the rep. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2019-09-26 00:00:00 | 2019-09-26 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | first\_voice\_customer\_state | varchar(255) | Initial state assigned to the customer when using voice. | IDENTIFIED, VERIFIED | | | 2019-11-21 00:00:00 | 2019-11-21 00:00:00 | no | | | | | | first\_voice\_customer\_state\_ts | timestamp | Timestamp when the customer was first assigned a state. | 2020-01-18T03:43:41.414000+00:00 | | | 2019-11-21 00:00:00 | 2019-11-21 00:00:00 | no | | | | | | first\_voice\_identified\_customer\_state\_ts | timestamp | Time when the customer was first assigned an IDENTIFIED state. | 2020-01-18T03:43:41.414000+00:00 | | | 2019-11-21 00:00:00 | 2019-11-21 00:00:00 | no | | | | | | first\_voice\_verified\_customer\_state\_ts | timestamp | Time when the customer was first assigned an VERIFIED state. | 2020-01-18T03:43:41.414000+00:00 | | | 2019-11-21 00:00:00 | 2019-11-21 00:00:00 | no | | | | | | merged\_ts | timestamp | Time when the issue was merged into another issue. data type: timestamp | 2020-01-18T03:43:41.414000+00:00 | | | 2019-12-28 00:00:00 | 2019-12-28 00:00:00 | no | | | | | | desk\_mode\_flag | bigint | Bitmap encodes if agent handled voice-issue ASAPP desk, had engagement with ASAPP desk. bitmap: 0: null, 1: 'VOICE', 2: 'DESK', 4: 'ENGAGEMENT', 8: 'INACTIVITY' NULL for non voice issues | 0, 1, 2, 5, 7 | | | 2020-02-19 00:00:00 | 2020-02-19 00:00:00 | no | | | | | | desk\_mode\_string | varchar(191) | Decodes the desk\_mode flag. Current possible values (Null, 'VOICE', 'VOICE\_DESK', 'VOICE\_DESK\_ENGAGEMENT','VOICE\_INACTIVITY'). NULL for non voice issues. | VOICE\_DESK | | | 2020-02-19 00:00:00 | 2020-02-19 00:00:00 | no | | | | | | current\_page\_url | varchar(2000) | URL link (stripped of parameters) that triggered the start chat event. Only applicable for WEB platforms. aliases: trigger\_link | https:[www.acme.corp/billing/viewbill](http://www.acme.corp/billing/viewbill) | | | 2020-04-25 00:00:00 | 2020-04-25 00:00:00 | no | | | | | | raw\_current\_page\_url | varchar(65535) | Full URL link (including parameters) that triggered the chat event. Only applicable for WEB platforms. aliases: raw\_trigger\_link | | | | 2020-04-25 00:00:00 | 2020-04-25 00:00:00 | no | | | | | ### Table: convos\_metrics The convos\_metrics table contains counts of various metrics associated with an issue/conversation(e.g. "attempted to chat", "assisted"). The table contains data associated with an issue during a given 15 minute window. The convos\_metrics table will include unended conversation data. **Sync Time:** 1h **Unique Condition:** issue\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :--------------------------------------- | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | first\_utterance\_ts | timestamp | Time of the first customer message in the conversation. | 2019-05-16T02:47:13+00:00 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-11-06 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | platform | varchar(255) | The platform which was used by the customer for a particular event or request (web, ios, android, applebiz, voice). | web, ios, android, applebiz, voice | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | device\_type | varchar(255) | Last device type used by the customer for an issue. | mobile, tablet, desktop, watch, unknown | | | 2019-06-18 00:00:00 | 2019-06-18 00:00:00 | no | | | | | | assisted | tinyint(1) | Flag indicates whether a rep was assigned and responded to the issue (1 if yes, 0 if no). | 0, 1 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | total\_handle\_time | double | Total time in seconds that reps spent handling the issue, from assignment to disposition. | 168.093 | | | 2019-03-05 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | total\_lead\_time | double | Total time in seconds the customer spent interacting during the conversation, from assignment to last utterance. | 163.222 | | | 2018-11-06 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | total\_wrap\_up\_time | double | Total time in seconds spent by reps wrapping up the conversation, calculated as the difference between handle and lead time. | 4.871 | | | 2018-11-06 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | total\_session\_time | double | Total time the customer spent seeking resolution, including time in queue and up until the conversation end event. | 190.87900018692017 | | | 2018-11-06 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | customer\_sent\_msgs | double | The total number of messages sent by the customer, including typed and tapped messages | 1, 3, 5 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | agent\_sent\_msgs | | deprecated: 2019-09-25 | | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | auto\_generated\_msgs | bigint(20) | The number of messages sent by the AI system. | 0,2 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | first\_rep\_response\_count | bigint(20) | The number of first responses by reps, post-assignment. This field will increment if there are transfers and timeouts and then reassigned and a rep answers. This field will NOT increment if a rep is assigned but doesn't get a chance to answer. | 0, 1 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | total\_seconds\_to\_first\_rep\_response | bigint(20) | Total time in seconds that passed before the rep responded to the customer. | 407.5679998397827 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | agent\_response\_count | | deprecated: 2019-09-25 | | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | customer\_response\_count | bigint(20) | The total number of responses (excluding messages) sent by the customer. | 0, 4 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | total\_rep\_seconds\_to\_respond | double | Total time in seconds the rep took to respond to the customer. | 407.5679998397827 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | total\_cust\_seconds\_to\_respond | double | Total time in seconds the customer took to respond to the rep. | 65.87400007247925 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | time\_in\_queue | double | The cumulative time in seconds spent in queue, including all re-queues. | 78.30999994277954 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | auto\_suggest\_msgs | bigint(20) | Total time spent by the customer in the queue, including any re-queues. | 0, 1, 3 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | auto\_complete\_msgs | bigint(20) | The number of autocomplete messages sent by a rep. | 0, 1, 3 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | auto\_wait\_for\_agent\_msgs | bigint | deprecated: 2019-09-25 | | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | customer\_wait\_for\_agent\_msgs | bigint | deprecated: 2019-09-25 | | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | attempted\_chat | tinyint(1) | TinyInt value indicates if there was an attempt to connect the customer to an rep. A value of 1 if the customer receives an out of business hours message or if a customer was asked to wait for a rep. Also a value of 1 if customer was escalated to chat. deprecation-date: 2020-04-14 expected-eol-date: 2021-10-15 | 0, 1 | | | 2018-11-06 00:00:00 | 2019-07-26 00:00:00 | no | | | | | | out\_business\_ct | bigint | The number of times that a customer received an out of business hours message. | 0, 2 | | | 2018-11-06 00:00:00 | 2019-04-23 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_sent\_msgs | bigint(20) | The number of messages a rep sent. | 0, 6, 7 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_response\_count | bigint(20) | The count of responses (not messages) sent by the reps. (Note: A FAQ or send-to-flow should count as a response, since from the perspective of the customer they are getting a response of some kind.) | 0, 5, 6 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | auto\_wait\_for\_rep\_msgs | bigint(20) | The number of times a user was asked to wait for a rep. | 0, 1, 2 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | customer\_wait\_for\_rep\_msgs | bigint(20) | The number of times a user asked to speak with a rep. | 0, 1 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | hold\_ct | bigint | The number of times the customer was placed on hold. This applies to VOICE only. | 0, 1, 2 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | total\_hold\_time\_seconds | float | The total amount of time in seconds that the customer was placed on hold. This applies to VOICE only. | 180.4639995098114 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: convos\_metrics\_ended The convos\_metrics table contains counts of various metrics associated with an issue/conversation(e.g. "attempted to chat", "assisted"). The table contains data associated with an issue during a given 15 minute window. This table will filter out unended conversations and issues with no activity. **Sync Time:** 1h **Unique Condition:** issue\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :--------------------------------------- | :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | first\_utterance\_ts | timestamp | Time of the first customer message in the conversation. | 2018-09-05 19:58:06 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | platform | varchar(255) | The platform which was used by the customer for a particular event or request (web, ios, android, applebiz, voice). | web, ios, android, applebiz, voice | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | device\_type | varchar(255) | The last device type used by the customer. | mobile, tablet, desktop, watch, unknown | | | 2019-06-18 00:00:00 | 2019-06-18 00:00:00 | no | | | | | | assisted | tinyint(1) | Flag indicates whether a rep was assigned and responded to the issue (1 if yes, 0 if no). | 0,1 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | total\_handle\_time | double | Total time in seconds that reps spent handling the issue, from assignment to disposition. | 718.968 | | | 2019-03-05 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | total\_lead\_time | double | Total time in seconds the customer spent interacting during the conversation, from assignment to last utterance. | 715.627 | | | 2018-11-06 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | total\_wrap\_up\_time | double | Total time in seconds spent by reps wrapping up the conversation, calculated as the difference between handle and lead time. | 27.583 | | | 2018-11-06 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | total\_session\_time | double | Total time the customer spent seeking resolution, including time in queue and up until the conversation end event. | 1441.0329999923706 | | | 2018-11-06 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | customer\_sent\_msgs | double | The total number of messages sent by the customer, including typed and tapped messages | 2, 1 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | agent\_sent\_msgs | | deprecated: 2019-09-25 | | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | auto\_generated\_msgs | bigint(20) | The number of messages sent by SRS. | 5, 3 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | first\_rep\_response\_count | bigint(20) | The number of first responses by reps, post-assignment. This field will increment if there are transfers and timeouts and then reassigned and a rep answers. This field will NOT increment if a rep is assigned but doesn't get a chance to answer. | 0, 1 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | total\_seconds\_to\_first\_rep\_response | bigint(20) | Total time in seconds that passed before the rep responded to the customer. | 4.291000127792358 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | agent\_response\_count | | deprecated: 2019-09-25 | | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | customer\_response\_count | bigint(20) | The total number of responses (excluding messages) sent by the customer. | 3, 0, 8 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | total\_rep\_seconds\_to\_respond | double | Total time in seconds the rep took to respond to the customer. | 240.28499960899353 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | total\_cust\_seconds\_to\_respond | double | Total time in seconds the customer took to respond to the rep. | 227.27100014686584 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | time\_in\_queue | double | Total time spent by the customer in the queue, including any re-queues. | 71.74499988555908 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | auto\_suggest\_msgs | bigint(20) | The number of autosuggest messages sent by rep. | 0, 3, 4 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | auto\_complete\_msgs | bigint(20) | The number of autocomplete messages sent by rep. | 0, 1, 2 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | auto\_wait\_for\_agent\_msgs | bigint | deprecated: 2019-09-25 | | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | customer\_wait\_for\_agent\_msgs | bigint | deprecated: 2019-09-25 | | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | attempted\_chat | tinyint(1) | A binary value of 1 indicates if there was an attempt to connect the customer to a rep. Also if a customer receives an out of business hours message or if customer was asked to wait for a rep or was escalated to chat. deprecation-date: 2020-04-14 expected-eol-date: 2021-10-15 | 0, 1 | | | 2018-11-06 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | out\_business\_ct | bigint | The number of times that a customer received an out of business hours message. | 0, 1 | | | 2018-11-06 00:00:00 | 2019-04-23 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_sent\_msgs | bigint(20) | The number of messages a rep sent. | 0, 4, 7 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_response\_count | bigint(20) | The number of first responses by reps, post-assignment. This field will increment if there are transfers and timeouts and then reassigned and a rep answers. This field will NOT increment if a rep is assigned but doesn't get a chance to answer. | 0, 1, 20 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | auto\_wait\_for\_rep\_msgs | bigint(20) | The number of times a user was asked to wait for a rep. | 0, 3, 4 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | customer\_wait\_for\_rep\_msgs | bigint(20) | The number of times a user asked to speak with a rep. | 0, 1, 2 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | hold\_ct | bigint | The number of times the customer was placed on hold. This field applies to VOICE. | 0, 1, 2 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | total\_hold\_time\_seconds | float | The total amount of time in seconds that the customer was placed on hold. This field applies to VOICE. | 53.472 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2019-11-01 00:00:00 | no | | | | | ### Table: convos\_summary\_tags The convos\_summary\_tags table contains information regarding all AI generated auto-summary tags populated by the system when a rep initiates the "end chat" disposition process. **Sync Time:** 1h **Unique Condition:** company\_id, issue\_id, summary\_tag\_presented | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :--------------------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------ | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | queue\_id | integer | The identifier of the group to which the rep (who dispositioned the issue) belongs. | 20001 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | queue\_name | varchar(255) | The name of the group to which the rep (who dispositioned the issue) belongs. | acme-mobile-english | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | disposition\_ts | timestamp | The time at which the rep dispositioned this issue (Exits the screen/frees up a slot). | 2020-01-18T00:21:41.423000+00:00 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | summary\_tag\_presented | character varying(65535) | The name of the auto-summary tag populated by the system when a rep ends an issue. The value is an empty string if no tag was populated but the rep. | '(customer)-(cancel)-(phone)', '(rep)-(add)-(account)' | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | summary\_tag\_selected\_bool | boolean | Boolean field returns true if a rep selects the summary\_tag\_presented. | false, true | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | disposition\_notes | text | Notes that the rep took when dispositioning the chat. Can be generated from free text or the chat summary tags. | 'no response from customer', 'edu cust on activation handling porting requests' | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | ### Table: csid\_containment The csid\_containment table tracks and organizes customer interactions by associating them with a unique session identifier (csid) with 30min window timeframe. It consolidates data related to customer sessions, including associated issue\_ids, session durations, and indicators of containment success. Containment success measures whether an issue was resolved within a session without escalation. This table is critical for analyzing customer interaction patterns, evaluating the effectiveness of issue resolution processes, and identifying areas for improvement. **Sync Time:** 1h **Unique Condition:** csid, company\_name | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | | | :-------------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- | :--------- | :---------- | :------------------ | :------------------ | :------------------ | :------------------ | :------------ | :----------- | :------------ | - | - | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | customer\_id | bigint | The customer identifier on which this session is based, after merge if applicable. | 123008 | | | 2018-11-06 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | | | external\_customer\_id | varchar(255) | The customer identifier as provided by the client. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | csid | varchar(255) | Unique identifier for a continuous period of activity for a given customer, starting at the specified timestamp. | '24790001\_2018-09-24T22:17:41.341' | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | csid\_start\_ts | timestamp without time zone | The start time of the customer's session. | 2019-12-23T16:00:10.072000+00:00 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | csid\_end\_ts | timestamp without time zone | The end time of the active session. | 2019-12-23T16:00:10.072000+00:00 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | agents\_involved | | deprecated: 2019-09-25 | | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | included\_issues | character varying(65535) | Pipe-delimited list of issues involved in this period of customer activity. | '2044970001 | 2045000001 | 2045010001' | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | is\_contained | boolean | Flag indicating whether reps were involved with any issues during this csid. | true, false | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | event\_count | bigint | The number of customer (only) events active during this csid. | 21 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | fgsrs\_event\_count | bigint | The number of FGSRS events during this csid. | 5 | | | 2019-08-30 00:00:00 | 2019-08-30 00:00:00 | no | | | | | | | | was\_enqueued | boolean | Flag indicating if enqueued events existed for this session. | true, false | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | rep\_msgs | bigint | Count of text messages sent by reps during this csid. | 6 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | messages\_sent | bigint | Number of text messages typed or quick replies clicked by the customer during this csid. | 4 | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | has\_customer\_utterance | boolean | Flag indicating if the csid contains customer messages. | true, false | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | attempted\_escalate | boolean | A boolean value indicating if the customer or flow tried (or succeeded) to reach a rep. | false, true | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | last\_platform | VARCHAR(191) | Flag indicating if the customer or flow attempted or succeeded in reaching a rep. | ANDROID, WEB, IOS | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | | last\_device\_type | VARCHAR(191) | Last device type used by the customer | mobile, tablet, desktop, watch, unknown | | | 2019-06-18 00:00:00 | 2019-06-18 00:00:00 | no | | | | | | | | first\_auth\_source | character varying(65535) | First source of the authentication event for a csid. | ivr-url | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | last\_auth\_source | character varying(65535) | Last source of the authentication event for a csid. | ivr-url | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | distinct\_auth\_source\_path | character varying(65535) | Comma-separated list of all distinct authentication event sources for the csid. | ivr-url, facebook | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | first\_auth\_external\_user\_type | character varying(65535) | The first external user type of the authentication event for a csid. | client\_CUSTOMER\_ACCOUNT\_ID | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | last\_auth\_external\_user\_type | character varying(65535) | The last external user type of the authentication event for a csid. | client\_CUSTOMER\_ACCOUNT\_ID | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | first\_auth\_external\_user\_id | character varying(65535) | Client-provided field for the first external user ID linked to an authentication event. | 64b0959a65a63dec32e1be04fe755be1 | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | last\_auth\_external\_user\_id | character varying(65535) | Client-provided field for the last external user ID linked to an authentication event. | 64b0959a65a63dec32e1be04fe755be1 | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | first\_auth\_external\_token\_id | character varying(65535) | A client provided field. The first encrypted user ID from client system associated with an authentication event. | 82EFDDADC5466501443E3E61ED640162 | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | last\_auth\_external\_token\_id | character varying(65535) | A client provided field. The last encrypted user ID from client system associated with an authentication event. | 82EFDDADC5466501443E3E61ED640162 | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | reps\_involved | varchar(4096) | Pipe-delimited list of reps associated with any issues during this session. | '209000 | 2020001' | | | 2018-11-06 00:00:00 | 2018-11-06 00:00:00 | no | | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | | ### Table: csid\_containment\_1d The csid\_containment table tracks and organizes customer interactions by associating them with a unique session identifier (csid) with 24 hours of window timeframe. It consolidates data related to customer sessions, including associated issue\_ids, session durations, and indicators of containment success. Containment success measures whether an issue was resolved within a session without escalation. This table is critical for analyzing customer interaction patterns, evaluating the effectiveness of issue resolution processes, and identifying areas for improvement. **Sync Time:** 1h **Unique Condition:** csid, company\_name | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | | | :-------------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- | :--------- | :---------- | :------------------ | :------------------ | :------------------ | :------------------ | :------------ | :----------- | :------------ | - | - | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | customer\_id | bigint | The customer identifier on which this session is based, after merge if applicable. | 123008 | | | 2018-01-15 00:00:00 | 2018-11-07 00:00:00 | no | | | | | | | | external\_customer\_id | varchar(255) | The customer identifier as provided by the client. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | csid | varchar(255) | Unique identifier for a continuous period of activity for a given customer, starting at the specified timestamp. | '24790001\_2018-09-24T22:17:41.341' | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | csid\_start\_ts | timestamp without time zone | The start time of the customer's session. | 2019-12-23T16:00:10.072000+00:00 | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | csid\_end\_ts | timestamp without time zone | The end time of the active session. | 2019-12-23T16:00:10.072000+00:00 | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | agents\_involved | | deprecated: 2019-09-25 | | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | included\_issues | character varying(65535) | Pipe-delimited list of issues involved in this period of customer activity. | '2044970001 | 2045000001 | 2045010001' | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | is\_contained | boolean | Flag indicating whether reps were involved with any issues during this csid. | true, false | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | event\_count | bigint | The number of customer (only) events active during this csid. | 21 | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | fgsrs\_event\_count | bigint | The number of FGSRS events during this csid. | 5 | | | 2019-08-30 00:00:00 | 2019-08-30 00:00:00 | no | | | | | | | | was\_enqueued | boolean | Flag indicating if enqueued events existed for this session. | true, false | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | rep\_msgs | bigint | Count of text messages sent by reps during this csid. | 6 | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | messages\_sent | bigint | Number of text messages typed or quick replies clicked by the customer during this csid. | 4 | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | has\_customer\_utterance | boolean | Flag indicating if the csid contains customer messages. | true, false | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | attempted\_escalate | boolean | A boolean value indicating if the customer or flow tried (or succeeded) to reach a rep. | false, true | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | last\_platform | VARCHAR(191) | Flag indicating if the customer or flow attempted or succeeded in reaching a rep. | ANDROID, WEB, IOS | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | | last\_device\_type | VARCHAR(191) | Last device type used by the customer | mobile, tablet, desktop, watch, unknown | | | 2019-06-18 00:00:00 | 2019-06-18 00:00:00 | no | | | | | | | | first\_auth\_source | character varying(65535) | First source of the authentication event for a csid. | ivr-url | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | last\_auth\_source | character varying(65535) | Last source of the authentication event for a csid. | ivr-url | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | distinct\_auth\_source\_path | character varying(65535) | Comma-separated list of all distinct authentication event sources for the csid. | ivr-url, facebook | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | first\_auth\_external\_user\_type | character varying(65535) | The first external user type of the authentication event for a csid. | client\_CUSTOMER\_ACCOUNT\_ID | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | last\_auth\_external\_user\_type | character varying(65535) | The last external user type of the authentication event for a csid. | client\_CUSTOMER\_ACCOUNT\_ID | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | first\_auth\_external\_user\_id | character varying(65535) | Client-provided field for the first external user ID linked to an authentication event. | 64b0959a65a63dec32e1be04fe755be1 | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | last\_auth\_external\_user\_id | character varying(65535) | Client-provided field for the last external user ID linked to an authentication event. | 64b0959a65a63dec32e1be04fe755be1 | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | first\_auth\_external\_token\_id | character varying(65535) | A client provided field. The first encrypted user ID from client system associated with an authentication event. | 82EFDDADC5466501443E3E61ED640162 | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | last\_auth\_external\_token\_id | character varying(65535) | A client provided field. The last encrypted user ID from client system associated with an authentication event. | 82EFDDADC5466501443E3E61ED640162 | | | 2019-05-15 00:00:00 | 2019-05-15 00:00:00 | no | | | | | | | | reps\_involved | varchar(4096) | Pipe-delimited list of reps associated with any issues during this session. | '209000 | 2020001' | | | 2018-01-15 00:00:00 | 2018-01-15 00:00:00 | no | | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | | ### Table: customer\_feedback The customer\_feedback table contains the feedback regarding how well their issue was resolved. This table contains columns such as the feedback question prompted at issue completion, the customer response and the last rep identifier which was associated with an issue\_id. **Sync Time:** 1d **Unique Condition:** issue\_id, company\_marker, last\_rep\_id, question, instance\_ts **Ordering Precedence:** last\_event\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | last\_agent\_id | varchar(191) | deprecated: 2019-09-25 | 123008 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | question | character varying(65535) | Question presented to the user. | VOC Score, endSRS rating, What did the agent do well, or what could the agent have done better? (1000 character limit) | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | question\_category | character varying(65535) | The question category type. | rating, comment, levelOfEffort | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | question\_type | character varying(65535) | The type of question. | rating, scale, radio | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | answer | character varying(65535) | The customer's answer to the question. | 0, 1, 17, yes | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | ordering | integer | The sequence or order of the question. | 0, 1, 3, 5 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | last\_rep\_id | varchar(191) | The last ASAPP rep/agent identifier found in a window of time. | 123008 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2021-09-10 00:00:00 | 2021-09-10 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2021-09-10 00:00:00 | 2021-09-10 00:00:00 | no | | | | | | platform | varchar(255) | The platform which was used by the customer for a particular event or request (web, ios, android, applebiz, voice). | web, ios, android, applebiz, voice | | | 2021-09-10 00:00:00 | 2021-09-10 00:00:00 | no | | | | | | feedback\_type | character varying(65535) | The classification of feedback provided by the customer. | FEEDBACK\_AGENT, etc | | | 2021-09-10 00:00:00 | 2021-09-10 00:00:00 | no | | | | | | feedback\_form\_type | character varying(65535) | Indicates the type of feedback form completed by the customer. | ASAPP\_CSAT, GBM | | | 2021-09-10 00:00:00 | 2021-09-10 00:00:00 | no | | | | | ### Table: customer\_params The customer\_params table contains information which the client sends to ASAPP. The table may have multiple rows associated with one issue\_id. Clients specify the information to store using a JSON entry which may contain multiple semicolon separated (key, value) pairs. **Sync Time:** 1d **Unique Condition:** event\_id, param\_key **Ordering Precedence:** event\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | event\_ts | timestamp | The time at which this event was fired. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | The subdivision of the company. | ACMEsubcorp | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | company\_segments | varchar(255) | The segments of the company. | marketing,promotions | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | rep\_id | varchar(191) | deprecated: 2022-06-30 | 123008 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | referring\_page\_url | character varying(65535) | The URL of the page the user navigated from. | [https://www.acme.com/wireless](https://www.acme.com/wireless) | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | event\_id | character varying(256) | A unique identifier for the event within the customer parameter payload. | | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | platform | varchar(255) | The platform the customer is using to interact with ASAPP. | 08679ded-38b7-11ea-9c44-debfe2011fef | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | session\_id | varchar(128) | The websocket UUID associated with the current request's session. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | auth\_state | boolean | Flag indicating if the user is authenticated. | true, false | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | params | character varying(65535) | A string representation of the JSON parameters. | `{"Key1":"Value1"; "Key2":"Value2"}` | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | param\_key | character varying(255) | A value of a specific key within the parameter JSON. | Key1 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | param\_value | character varying(65535) | The value corresponding with the specific key in param\_key. | Value1 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | current\_page\_url | varchar(2000) | The URL of the page where the customer initiated the ASAPP chat. | [https://www.asapp.com](https://www.asapp.com) | | | 2021-09-16 00:00:00 | 2021-09-16 00:00:00 | no | | | | | ### Table: customer\_params\_hourly The customer\_params table contains information which the client sends to ASAPP. The table may have multiple rows associated with one issue\_id. Clients specify the information to store using a JSON entry which may contain multiple semicolon separated (key, value) pairs. **Sync Time:** 1h **Unique Condition:** event\_id, param\_key | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | event\_ts | timestamp | The time at which this event was fired. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | The subdivision of the company. | ACMEsubcorp | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | company\_segments | varchar(255) | The segments of the company. | marketing,promotions | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | rep\_id | varchar(191) | deprecated: 2022-06-30 | 123008 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | referring\_page\_url | character varying(65535) | The URL of the page the user navigated from. | [https://www.acme.com/wireless](https://www.acme.com/wireless) | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | event\_id | character varying(256) | A unique identifier for the event within the customer parameter payload. | | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | platform | varchar(255) | The platform the customer is using to interact with ASAPP. | 08679ded-38b7-11ea-9c44-debfe2011fef | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | session\_id | varchar(128) | The websocket UUID associated with the current request's session. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | auth\_state | boolean | Flag indicating if the user is authenticated. | true, false | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | params | character varying(65535) | A string representation of the JSON parameters. | `{"Key1":"Value1"; "Key2":"Value2"}` | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | param\_key | character varying(255) | A value of a specific key within the parameter JSON. | Key1 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | param\_value | character varying(65535) | The value corresponding with the specific key in param\_key. | Value1 | | | 2019-01-25 00:00:00 | 2019-01-25 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | current\_page\_url | varchar(2000) | The URL of the page where the customer initiated the ASAPP chat. | [https://www.asapp.com](https://www.asapp.com) | | | 2021-09-16 00:00:00 | 2021-09-16 00:00:00 | no | | | | | ### Table: dim\_queues The dim\_queues table creates a mapping of queue\_id to queue\_name. This is an hourly snapshot of information. **Sync Time:** 1h **Unique Condition:** queue\_key | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------ | :----------- | :----------------------------------------------------- | :------ | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2022-01-27 00:00:00 | 2022-01-27 00:00:00 | no | | | | | | queue\_key | bigint | Numeric primary key for dim queues | 100001 | | | 2022-01-27 00:00:00 | 2022-01-27 00:00:00 | no | | | | | | queue\_id | integer | The ASAPP queue identifier which the issue was placed. | 210001 | | | 2022-01-27 00:00:00 | 2022-01-27 00:00:00 | no | | | | | | queue\_name | varchar(255) | Name of the queue. | Voice | | | 2022-01-27 00:00:00 | 2022-01-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2025-01-27 00:00:00 | 2025-01-27 00:00:00 | no | | | | | ### Table: flow\_completions The purpose of this table is to list the flow success information, any negation data, and other associated metadata for all issues. This table provides insights into the success or failure of any issue. Flow Success refers to the successful completion of a predefined process or interaction flow without interruptions, errors, or escalations, as determined by specific business logic. **Sync Time:** 1h **Unique Condition:** issue\_id, flow\_name, flow\_status\_ts, success\_event\_details **Ordering Precedence:** COALESCE(success\_event\_ts, negation\_event\_ts) | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------------ | :-------------------------- | :-------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-11-14 00:00:00 | 2019-09-12 00:00:00 | no | no | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | platform | varchar(255) | The customer's platform. | web, ios, android, applebiz, voice | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | external\_user\_id | varchar(255) | Client-provided identifier for customer, Available if the customer is authenticated. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | customer\_session\_id | character varying(65535) | The ASAPP application session identifier for this customer. | c5d7afcc-89b9-43cc-90e2-b869bb2be883 | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | success\_rule\_id | character varying(256) | The tag denoting whether the flow was successful within this issue. | LINK\_RESOLVED, TOOLING\_SUCCESS | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | success\_event\_details | character varying(65535) | Any additional metadata about this success rule. | asapp-pil://acme/grande-shop, EndSRSPositiveMessage | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | success\_event\_ts | timestamp without time zone | The time at which the flow success occurred. | 2019-12-03T01:43:17.079000+00:00 | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | negation\_rule\_id | character varying(256) | The tag denoting the last negation event that reverted a previous success. | TOOLING\_NEGATION, NEG\_QUESTION\_NOT\_ANSWERED | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | negation\_event\_ts | timestamp without time zone | The time at which this negation occurred. | 2019-12-03T01:49:19.875000+00:00 | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | is\_flow\_success\_event | boolean | True if this event was not negated directly, false otherwise. | true, false | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | is\_flow\_success\_issue | boolean | True if a success event occurred within this issue and no negation event occurred within this issue, false otherwise. | true, false | | | 2018-11-14 00:00:00 | 2018-11-14 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2019-11-01 00:00:00 | no | | | | | | last\_relevant\_event\_ts | timestamp | Timestamp of the most recent relevant event (success or negation) detected for this issue, useful for deduplication. | 2020-01-02T19:13:27.698000+00:00 | | | 2019-12-10 00:00:00 | 2019-12-10 00:00:00 | no | | | | | ### Table: flow\_detail The purpose of the flow\_detail table is to list out the data associated with each node traversed during an issue lifespan. A usage of this table is to understand the path a particular issue traversed trhough a flow node by node. **Sync Time:** 1h **Unique Condition:** event\_ts, issue\_id, event\_type | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------ | :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | event\_ts | timestamp | The time of an given event. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | event\_type | varchar(191) | The type of event within a given flow. | MESSAGE\_DISPLAYED | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | no | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-08-14 00:00:00 | 2018-08-27 00:00:00 | no | no | | | | | session\_id | varchar(128) | The ASAPP session identifier. It is a uuid generated by the chat backend. Note: a session may contain several conversations. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | flow\_id | varchar(255) | An ASAPP identifier assigned to a particular flow executed during a customer event or request. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | flow\_name | varchar(255) | The ASAPP text name for a given flow which was executed during a customer event or request. | FirstChatMessage, AccountNumberFlow | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | event\_name | character varying(65535) | The event name within a given flow. | FirstChatMessage, SuccessfulPaymentNode | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | no | | | | | link\_resolved\_pil | character varying(65535) | An ASAPP internal URI for the link. | asapp-pil://acme/bill-history | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | no | | | | | link\_resolved\_pdl | character varying(65535) | The resolved host deep link or web link. | [https://www.acme.com/BillHistory](https://www.acme.com/BillHistory) | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | no | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | flow\_type | character varying(256) | Type of the flow. Flow types include the following values: FLOW\_TYPE\_PRE\_ASAPP\_CHAT -- A flow to be completed before chatting with SRS. FLOW\_TYPE\_PRE\_ASAPP\_LIVE\_CHAT -- A flow to be completed before chatting with a live agent. FLOW\_TYPE\_ASAPP\_LIVE\_CHAT -- A flow to signifies a user is escalating or has escalated to an agent. FLOW\_TYPE\_BUSINESS -- An SRS flow intended to solve the customer's issue. FLOW\_TYPE\_UTILITY -- A background flow used for routing or gathering additional information from the custer. | FLOW\_TYPE\_UTILITY | | | 2025-05-06 00:00:00 | 2025-05-06 00:00:00 | no | no | | | | ### Table: intents The intents table contains a list of intent codes and other information associated with the intent codes. Information in the table includes flow\_name and short\_description. **Sync Time:** 1d **Unique Condition:** code | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :---------------------- | :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | code | character varying(128) | The ASAPP internal code for a given intent. | ACCTNUM | | | 2018-07-26 00:00:00 | 2018-07-26 00:00:00 | no | no | | | | | name | character varying(256) | The user-friendly name associated with an intent. | Get account number | | | 2018-07-26 00:00:00 | 2018-07-26 00:00:00 | no | no | | | | | intent\_type | character varying(128) | The hierarchical classification of this intent. | SYSTEM, LEAF, PARENT | | | 2018-07-26 00:00:00 | 2021-11-24 00:00:00 | no | no | | | | | short\_description | character varying(1024) | A short description for the intent code. | 'Users asking to get their account number.', 'Television error codes.' | | | 2018-07-26 00:00:00 | 2019-02-12 00:00:00 | no | no | | | | | flow\_name | varchar(255) | The ASAPP flow code attached to this intent code. | AccountNumberFlow | | | 2018-12-13 00:00:00 | 2018-12-13 00:00:00 | no | no | | | | | default\_disambiguation | boolean | True if the intents are part of the first "welcome" screen of disambiguation buttons presented to a customer, false otherwise. | false, true | | | 2018-12-13 00:00:00 | 2018-12-13 00:00:00 | no | no | | | | | actions | character varying(4096) | Describes the type of action for the customer interface (e.g., "flow" for forms, "link" for URLs, or "text" for help content). An empty value indicates no specific action or automation. | flow, link, test, NULL | | | 2018-12-20 00:00:00 | 2018-12-20 00:00:00 | no | no | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2021-04-09 00:00:00 | no | | | | | | deleted\_ts | timestamp | The date when this intent was removed. If blank or null, the intent is still active as of the export. An intent can be "undeleted" at a later date. | NULL, 2018-12-13 01:23:34 | | | 2021-11-23 00:00:00 | 2021-11-23 00:00:00 | no | no | | | | ### Table: issue\_callback\_3d The issue\_callback table relates issues from the same customer during a three day window. This table will help measure customer callback rate, the rate at which the same customer recontacts within a three day period. The issue\_callback table is applicable only to specific clients. **Sync Time:** 1h **Unique Condition:** issue\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :----------------------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | issue\_created\_ts | timestamp | Timestamp when the issue ID is created. | 2018-09-05 19:58:06 | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | issue\_disconnect\_ts | timestamp without time zone | Timestamp when the issue ID is Disconnected. | | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | issue\_cutoff\_ts | timestamp without time zone | The timestamp when the callback period expires for an issue. This is calculated as 3 days after the issue\_disconnect\_ts. | | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | next\_callback\_issue\_id | bigint | The ID of the next issue created by the same customer. This must occur between issue\_disconnect\_ts and issue\_cutoff\_ts. Null if no such issue exists. | | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | next\_callback\_issue\_created\_ts | timestamp without time zone | Time when the next\_callback\_issue was created. | | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | time\_btwn\_next\_callback\_issue\_seconds | double precision | The duration in seconds between issue\_disconnect\_ts and next\_callback\_issue\_created\_ts | | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | callback\_prev\_issue\_id | bigint | The ID of any previous issue created by the same customer, provided it was disconnected within 3 days of the current issue's create\_ts. Null if no such issue exists. | | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | callback\_prev\_issue\_created\_ts | timestamp without time zone | The timestamp when the callback\_prev\_issue was created. | | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | callback\_prev\_issue\_disconnect\_ts | timestamp without time zone | The timestamp when the callback\_prev\_issue was disconnected. | | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | time\_btwn\_callback\_prev\_issue\_seconds | double precision | The duration in seconds between callback\_prev\_issue\_disconnect\_ts and issue\_created\_ts. | | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-14 00:00:00 | 2019-11-14 00:00:00 | no | | | | | ### Table: issue\_entity\_genagent hourly snapshot of issue grain generative\_agent data including both dimensions and metrics aggregated over "all time" (two days in practice). **Sync Time:** 1h **Unique Condition:** issue\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :---------------------------------------------------- | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------------- | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | generative\_agent\_turns\_\_turn\_ct | int | Number of turns ( one cycle of interaction between GenerativeAgent and a user) | 1 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | generative\_agent\_turns\_\_turn\_duration\_ms\_sum | bigint | Total duration in milliseconds between PROCESSING\_START and PROCESSING\_END across all turns. | 2 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | generative\_agent\_turns\_\_utterance\_ct | int | Number of generative\_agent utterances. | 2 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | generative\_agent\_turns\_\_contains\_escalation | boolean | Indicates if any turn in the conversation resulted in an escalation to a human agent. | 1 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | generative\_agent\_tasks\_\_first\_task\_name | varchar(255) | Name of the first task initiated by the generative agent. | SomethingElse | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | generative\_agent\_tasks\_\_last\_task\_name | varchar(255) | Name of the last task initiated by the generative agent. | SomethingElse | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | generative\_agent\_tasks\_\_task\_ct | int | Number of tasks entered by generative\_agent. | 2 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | generative\_agent\_tasks\_\_configuration\_id | varchar(255) | The configuration version responsible for the actions of the generative agent. | 4ea5b399-f969-49c6-8318-e2c39a98e817 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | | | generative\_agent\_tasks\_\_used\_hila | boolean | Boolean representing if the conversation used a HILA escalation. True doesn't guarantee that there was a HILA response in the conversation. | TRUE | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | genagent\_tasks | | generative\_agent\_monitoring\_\_flagged\_for\_review | boolean | Boolean representing if the conversation has at least one suggested review flag. | TRUE | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | genagent\_monitoring | | generative\_agent\_monitoring\_\_review\_flags\_ct | bigint | Number of review flags. | 2 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | genagent\_monitoring | | generative\_agent\_monitoring\_\_evaluation\_ct | bigint | Number of evaluations. | 10 | | | 2024-11-08 00:00:00 | 2024-11-08 00:00:00 | no | | | | genagent\_monitoring | ### Table: issue\_entry This table shows data about how a user began an interaction with the sdk by issue **Sync Time:** 1h **Unique Condition:** issue\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :-------------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | issue\_created\_ts | timestamp | timestamp of the "NEW\_ISSUE" event for an issue | 2018-09-05 19:58:06 | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | company\_id | bigint | The ASAPP identifier of the company or test data source. | 10001 | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | entry\_type | character varying(384) | Initiation source of the first activity for the Issue ID was from a proactive invitation, reactive button click, deep-link ask-secondary-question, etc. examples: PROACTIVE,REACTIVE,ASK,DEEPLINK | | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | treatment\_type | varchar(64) | Indicates whether proactive messaging is configured to route the customer to an automated flow or a live agent. | QUEUE\_PAUSED | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | rule\_name | character varying(65535) | Name of the logical set of criteria met by the customer to trigger a proactive invitation or reactive button display. | | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | is\_new\_conversation | boolean | Indicates whether the issue was created as a new conversation when the customer was not engaged in any ongoing or active issue. | | | | 2019-11-15 00:00:00 | 2019-11-15 00:00:00 | no | | | | | | is\_new\_user | boolean | Indicates if this is the first issue from the customer. | | | | 2019-11-15 00:00:00 | 2019-11-15 00:00:00 | no | | | | | | current\_page\_url | varchar(2000) | The URL of the page where the SDK was displayed. | [https://www.asapp.com](https://www.asapp.com) | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | referring\_page\_url | character varying(65535) | The URL of the page that directed the user to the current page. | | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | | client\_uuid | character varying(36) | The UUID generated (that only ever lasts fifteen minutes or so) on each fresh sdk cache that can identify a unique human. For internal debuging, it won't go to sync (exactly as it comes from the source without any transformation) | c3944019-24d3-4887-8794-045cd61d5a22 | | | 2024-07-01 00:00:00 | 2021-06-01 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2024-07-01 00:00:00 | 2024-07-01 00:00:00 | no | | | | | ### Table: issue\_omnichannel This table captures omnichannel tracking events related with the different platforms we have. (Initially only ABC) **Sync Time:** 1h **Unique Condition:** issue\_id, third\_party\_customer\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2020-06-02 00:00:00 | 2020-06-02 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2020-06-02 00:00:00 | 2020-06-02 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2020-06-02 00:00:00 | 2020-06-02 00:00:00 | no | | | | | | omni\_source | character varying(191) | The source of the information. | 'ABC' | | | 2020-06-03 00:00:00 | 2020-06-03 00:00:00 | no | | | | | | opaque\_id | varchar(191) | deprecated: 2020-09-11 | 'urn:mbid:XXXXXX' | | | 2020-06-03 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | external\_intent | character varying(65535) | The intention or purpose of the chat as specified by the business, such as account\_question. deprecated: 2020-09-11 | 'account\_question' | | | 2020-06-03 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | external\_group | character varying(65535) | Group identifier for the message, as specified by the business, such as department name. deprecated: 2020-09-11 | 'credit\_card\_department' | | | 2020-06-03 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | first\_utterance | character varying(191) | Captures the text of the first customer statement in an issue. | | | | 2020-06-03 00:00:00 | 2020-06-03 00:00:00 | no | | | | | | event\_ts | timestamp | deprecated: 2020-09-11 | 2019-11-08 14:00:06.957000+00:00 | | | 2020-06-02 00:00:00 | 2020-06-02 00:00:00 | no | | | | | | third\_party\_customer\_id | character varying(65535) | An encrypted identifier which is permanently mapped to an ASAPP customer. | 'urn:mbid:XXXXXX' | | | 2020-07-23 00:00:00 | 2020-07-23 00:00:00 | no | | | | | | external\_context\_1 | character varying(65535) | Provides traffic source or customer context from external platforms, including Apple Business Chat Group ID and Google Business Messaging Entry Point. | 'credit\_card\_department' | | | 2020-07-23 00:00:00 | 2020-07-23 00:00:00 | no | | | | | | external\_context\_2 | character varying(65535) | Provides additional traffic source or customer context from external platforms, including Apple Business Chat Intent ID and Google Business Messaging Place ID. | 'account\_question' | | | 2020-07-23 00:00:00 | 2020-07-23 00:00:00 | no | | | | | | created\_ts | timestamp | Timestamp at which the message was sent. | '2019-11-08T14:00:06.95700000:00' | | | 2020-07-23 00:00:00 | 2020-07-23 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2025-01-09 00:00:00 | 2025-01-09 00:00:00 | no | | | | | ### Table: issue\_queues The purpose for the issue\_queues table is to capture relevant data associated with an issue in a wait queue. Data captured includes the issue\_id, the enqueue time, the rep, the event type and flowname. This is captured in 15 minute windows of time. **Sync Time:** 1h **Unique Condition:** issue\_id, queue\_id, enter\_queue\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :-------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | agent\_id | bigint | deprecated: 2019-09-25 | 123008 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | enter\_queue\_ts | timestamp without time zone | Timestamp when the issue was added to the queue. | 2019-12-26T18:25:22.836000+00:00 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | exit\_queue\_ts | timestamp | Timestamp when the issue was removed from the queue. | 2019-12-26T18:25:28.552000+00:00 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | queue\_id | integer | ASAPP queue identifier which the issue was placed. | 20001 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | queue\_name | varchar(255) | Queue name which the issue was placed. | Acme Residential, Acme Wireless | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | abandoned | boolean | Flag indicating whether the issue was abandoned. | true, false | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | enqueue\_time | double precision | Duration in seconds that the issue spent in the queue. | 5.716000080108643 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | exit\_queue\_eventtype | character varying(65535) | Reason the customer exited the queue. | CUSTOMER\_TIMEDOUT, NEW\_REP | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | enter\_queue\_eventtype | character varying(65535) | Reason the customer entered the queue. | TRANSFER\_REQUESTED, SRS\_HIER\_AND\_TREEWALK | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | enter\_queue\_eventflags | bigint | Event causing the issue to be enqueued. | (1=customer, 2=rep, 4=bot) | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | enter\_queue\_flow\_name | character varying(65535) | Name of the flow which the issue was in before being enqueued. | LiveChatAgentsBusyFlow | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | enter\_queue\_message\_name | character varying(65535) | Message name within the flow which the user was in before being enqueued. | someoneWillBeWithYou, shortWaitFormNode | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | exit\_queue\_eventflags | bigint | Event causing the issue to be deenqueued. | (1=customer, 2=rep, 4=bot) | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: issue\_sentiment The issue\_sentiment table captures sentiment analysis information related to customer issues. Each row represents an issue and its associated sentiment score or classification. This table helps track customer sentiment trends, assess the emotional tone of interactions, and support decision-making for issue resolution strategies. **Sync Time:** 1d **Unique Condition:** issue\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :--------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-07-26 00:00:00 | 2018-09-29 00:00:00 | no | | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-07-26 00:00:00 | 2018-07-26 00:00:00 | no | | | | | | score | double precision | The sentiment score applied to this issue. | 0.5545974373817444, -1000.0 | | | 2018-07-26 00:00:00 | 2018-07-26 00:00:00 | no | | | | | | status | character varying(65535) | Reason for the sentiment score, which may be NULL | CONVERSATION\_TOO\_SHORT | | | 2018-07-26 00:00:00 | 2018-07-26 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: issue\_session\_merge A list of the merged issues that have occurred as a result of transferring to a queue during a cold transfer and the first issue\_id associated with this new issue\_id. Only relevant for VOICE. activate-date: 2024-01-17 **Sync Time:** 1h **Unique Condition:** issue\_id, session\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------------ | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | | | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2020-02-05 00:00:00 | 2020-02-05 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | | | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2020-02-05 00:00:00 | 2020-02-05 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2020-02-05 00:00:00 | 2020-02-05 00:00:00 | no | | | | | | session\_id | varchar(128) | The ASAPP session identifier. It is a uuid generated by the chat backend. Note: a session may contain several conversations. | 'guid:2348001002-0032128785-2172846080-0001197432' | | | 2020-02-05 00:00:00 | 2020-02-05 00:00:00 | no | | | | | | issue\_created\_ts | timestamp | Timestamp this issue\_id was created. | 2018-09-05 19:58:06 | | | 2020-02-05 00:00:00 | 2020-02-05 00:00:00 | no | | | | | | first\_issue\_id | bigint | The first issue\_id for this session. | 21352352 | | | 2020-02-05 00:00:00 | 2020-02-05 00:00:00 | no | | | | | | first\_issue\_created\_ts | timestamp | Timestamp when the NEW\_ISSUE event occurred for the first issue\_id associated with this session. | 2018-09-05 19:58:06 | | | 2020-02-05 00:00:00 | 2020-02-05 00:00:00 | no | | | | | | last\_issue\_id | bigint | The last issue\_id associated with this session. | 21352352 | | | 2020-02-05 00:00:00 | 2020-02-05 00:00:00 | no | | | | | | last\_issue\_created\_ts | timestamp | Timestamp when the NEW\_ISSUE event occurred for the last issue\_id associated with this session | 2018-09-05 19:58:06 | | | 2020-02-05 00:00:00 | 2020-02-05 00:00:00 | no | | | | | ### Table: issue\_type The purpose of the issue\_type table is to capture any client specific naming of issue parameters. This captures per issue the initial "issue type name" which the client has specified. This is captured in 15 minute window increments. **Sync Time:** 1h **Unique Condition:** customer\_id, issue\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | prechat\_survey\_ts | timestamp without time zone | Timestamp when the pre-chat survey was completed to route the issue to an expert. | 2019-08-07 19:34:18.844 | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | type\_change\_ts | timestamp without time zone | The timestamp when the issue type was changed (e.g. escalated from question.) Null if the issue type was not changed. | 2019-08-07 19:45:57.325 | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | queue\_id | integer | The unique identifier for the queue to which the issue was routed. | 20001 | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | issue\_type | character varying(65535) | Current type of the issue (question or escalation). | ESCALATION | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | initial\_type | character varying(65535) | Original type of the issue when it was created. | QUESTION | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | subsidiary\_name | character varying(65535) | Name of the company to which this issue is associated. | ACMEsubsid | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | channel\_type | character varying(65535) | Indicates the channel (voice or chat) if the issue started as ESCALATION, or null otherwise. | CALL | | | 2019-08-12 00:00:00 | 2019-08-12 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: knowledge\_base This table captures interactions with articles in the knowledge base. An article can be viewed, attached to a chat and marked as favorite **Sync Time:** 1h **Unique Condition:** issue\_id, article\_id, event\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :--------------------- | :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | article\_id | character varying(65535) | The knowledge base identifier for the article. | 5, 16580001 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | interaction | character varying(8) | An indicator of whether the article was viewed or attached to a chat. | 'Viewed', 'Attached' | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | is\_favorited | boolean | Indicates whether the article is marked as a favorite. | TRUE, FALSE | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | event\_ts | timestamp | The time of an given event. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | event\_type | varchar(191) | Either Interaction events requested: ('OPEN\_ARTICLE', 'PAPERCLIP\_ARTICLE') or Recommendation events requested: ('DISPLAYED','AGENT\_HOVERED', 'AGENT\_CLICKED\_EXTERNAL\_ARTICLE\_LINK', 'AGENT\_CLICKED\_THUMBS\_UP' 'AGENT\_CLICKED\_THUMBS\_DOWN', 'AGENT\_CLICKED\_EXPAND\_CARD', 'AGENT\_CLICKED\_COLLAPSE\_CARD') | CUSTOMER\_TIMEOUT, TEXT\_MESSAGE | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | event\_name | character varying(191) | A string that determines if the action comes from an Interaction event or a Recommendation event | 'INTERACTION', 'SUGGESTION' | | | 2019-12-20 00:00:00 | 2019-12-20 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2020-03-30 00:00:00 | 2020-03-30 00:00:00 | no | | | | | | rep\_assigned\_ts | timestamp without time zone | timestamp of the NEW\_REP event | | | | 2020-10-15 00:00:00 | 2020-10-15 00:00:00 | no | | | | | | article\_category | character varying(191) | Category to distinguish between flows and knowledge base articles. REGULAR is for knowledge base articles. FLOWS is for flows recommendation. | 'REGULAR' | | | 2020-10-15 00:00:00 | 2020-10-15 00:00:00 | no | | | | | | discovery\_type | character varying(256) | How article was presented/discovered. (recommendation, quick\_access\_kbr, favorite, search, filebrowser) | recommendation | | | 2021-03-09 00:00:00 | 2021-03-09 00:00:00 | no | | | | | | position | integer | Position of article recommendation when multiple recommendations are presented. Default is 1 when a single recommendation is presented. | 1 | | | 2021-03-09 00:00:00 | 2021-03-09 00:00:00 | no | | | | | | span\_id | varchar(128) | Identifier for a recommendation. Can be used to tie a recommendation to an interaction such as HOVER, OPEN\_ARTICLE. | 'coo9c7b8-7a50-11eb-b13e-8ad0401b5458' | | | 2021-03-09 00:00:00 | 2021-03-09 00:00:00 | no | | | | | | article\_name | character varying(65535) | Short description of the article. | 500 | | | 2021-03-09 00:00:00 | 2021-03-09 00:00:00 | no | | | | | | is\_paperclip\_enabled | boolean | Flag which indicates whether the article is paper clipped (Bookmark). | TRUE | | | 2021-03-09 00:00:00 | 2021-03-09 00:00:00 | no | | | | | | external\_article\_id | character varying(65535) | Identifier for external article id. | 4567 | | | 2021-03-09 00:00:00 | 2021-03-09 00:00:00 | no | | | | | ### Table: live\_agent\_opportunities The live\_agent\_opportunities table tracks instances where automated processes, such as chatbots or virtual assistants, escalate a conversation or issue to a live agent. It offers insights into the effectiveness of automation, the reasons behind escalations, and key metrics for improving both customer experience and agent performance. The term "Opportunity" refers to the period from when the conversation is handed over to an agent until its closure. **Sync Time:** 1h **Unique Condition:** issue\_id, customer\_id, opportunity\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :-------------------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | rep\_id | varchar(191) | The identifier of the rep this opportunity was assigned to or null if it was never assigned. | 123008 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | opportunity\_ts | timestamp | Timestamp of the opportunity event. | 2020-01-06 23:13:50.617 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | platform | varchar(255) | The platform which was used by the customer for a particular event or request (web, ios, android, applebiz, voice). | web, ios, android, applebiz, voice | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | device\_type | varchar(255) | Last device type used by the customer. | mobile, tablet, desktop, watch, unknown | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | first\_opportunity | boolean | Indicator of whether this is the first opportunity for this issue. | true, false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | triggered\_when\_busy | boolean | Indicator of whether the customer was asked if they wanted to wait for an agent. | true | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | triggered\_outside\_hours | boolean | Indicator of whether the customer was told they are outside of business hours. | false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | queue\_id | integer | Identifier of the agent group this opportunity will be routed to. | 2001 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | queue\_name | varchar(255) | Name of the queue this opportunity will be routed to. | Residential | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | intent\_code | character varying(128) | The most recent intent code used for routing this issue. | SALESFAQ, BILLINFO | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | event\_type | varchar(191) | The event\_type of this opportunity. This can be useful to determine if this is a transfer, etc. | NEW\_REP, SRS\_HIER\_AND\_TREEWALK | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | previous\_event\_type | character varying(65535) | The event\_type that occurred prior to this opportunity. This can be useful to determine if the customer was previously transferred or timed out. | SRS\_HIER\_AND\_TREEWALK | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | flow\_name | varchar(255) | The flow associated with the routing intent, if any. | ForceChatFlow | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | by\_request | boolean | Indicator of whether the customer explicitly request to speak to an agent (i.e. intent code has an AGENT as a parent). | true, false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | by\_end\_srs | boolean | Indicator of whether this opportunity occurred because of a negative end srs response. | true, false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | by\_api\_error | boolean | Indicator of whether this opportunity occurred because of an error in partner API. | true, false | | | 2019-10-21 00:00:00 | 2019-10-21 00:00:00 | no | | | | | | by\_design | boolean | Indicator of whether intent\_code is not null AND not by\_request AND not by\_end\_srs AND not by\_api\_error. Note this includes cases where a flow sends the customer to an agent if it has not successfully solved the problem. (ex: I am still not connected after a reset my router flow.) | true, false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | by\_other | boolean | Catch all indicator for all cases that are not by request, design or end\_srs. This generally happens if we are missing the intent code, either because of an API error or because of a data bug. | true, false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | enqueued\_ts | timestamp | The time which this opportunity was sent to a queue, or null if it never was enqueued. | 2020-01-06 23:13:50.617 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | exit\_queue\_ts | timestamp | Time at which the customer exited the queue. | 2020-01-06 23:13:50.617 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | abandoned\_ts | TIMESTAMP | The datetime when the customer abandoned the queue. | 2020-01-06 23:13:50.617 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | assigned\_ts | timestamp | Timestamp when the opportunity was assigned to a representative; null if it was never assigned. | 2020-01-03T18:54:45.140000+00:00 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | escalation\_initiated\_ts | timestamp | The lesser of enqueued and assigned time, null if never escalated. | 2020-01-06 23:13:50.617 | | | 2019-06-04 00:00:00 | 2019-06-04 00:00:00 | no | | | | | | rep\_first\_response\_ts | TIMESTAMP | The time when a rep first responded to the customer. | 2020-01-06 23:13:50.617 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | dispositioned\_ts | timestamp | The time at which the rep dispositioned this issue (Exits the screen/frees up a slot). | 2020-01-06 23:13:50.617 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | customer\_end\_ts | timestamp without time zone | The time at which customer ended the issue, if the customer ended the issue. | 2020-01-06 23:13:50.617 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | disposition\_event\_type | varchar(255) | Event type indicating how the conversation ended. | resolved, timedout | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | cust\_utterance\_count | bigint | Count of customer utterances from issue\_assigned\_ts to dispositioned\_ts | 4 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | rep\_utterance\_count | bigint | Count of rep utterances from issue\_assigned\_ts to dispositioned\_ts | 5 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | cust\_response\_ct | int | Total count of responses by customer. Max of one message following a rep message counted as a response. | 3 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | rep\_response\_ct | int | Total count of responses by agent. Max of one message following a customer message counted as a response. | 10 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | is\_ghost\_customer | boolean | True if the customer was assigned to a rep but never responded to the rep. | true, false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | handle\_time\_seconds | double precision | Time in seconds spent an agent working on a particular assignment. Time between assignment and disposition event | 824.211 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | lead\_time\_seconds | double precision | Time in seconds spent by an agent leading the conversation. Time between assignment and time of last utterance by THE CUSTOMER. If no utterance by customer, Lead time is total\_handle\_time. | 101.754 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | wrap\_up\_time\_seconds | double precision | Time in seconds spent by an agent wrapping up the conversation. Defined as total\_handle\_time-total\_lead\_time. | 61.989 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | accepted\_wait\_ts | timestamp without time zone | Timestamp at which the customer was sent a message confirming they had been placed into a queue. | 2019-09-11T14:15:59.312000+00:00 | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | is\_transfer | boolean | Indicator whether this opportunity is due to a transfer. | true, false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | is\_reengagement | boolean | Indicator whether this opportunity is due to the user returning from a timeout. | true, false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | is\_conversation\_initiation | boolean | Indicator of whether this opportunity is from a conversation initiation (i.e. not from transfer or reengagement). | true, false | | | 2019-07-01 00:00:00 | 2019-07-01 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | from\_queue\_id | bigint | The identifier of the group from which the issue was transferred. | 30001 | | | 2019-12-18 00:00:00 | 2019-12-18 00:00:00 | no | | | | | | from\_queue\_name | character varying(191) | The name of the group from which the issue was transferred. | service, General | | | 2019-12-18 00:00:00 | 2019-12-18 00:00:00 | no | | | | | | from\_rep\_id | bigint | The identifier of the rep from which the issue was transferred. | 81001 | | | 2019-12-18 00:00:00 | 2019-12-18 00:00:00 | no | | | | | | is\_check\_in\_reengagement | boolean | Is this opportunity due to the user coming back within a 24h period after being timed-out for not answering a check-in prompt on time. | true | | | 2020-01-14 00:00:00 | 2020-01-14 00:00:00 | no | | | | | | desk\_mode\_flag | bigint | Bitmap encodes if agent handled voice-issue ASAPP desk, had engagement with ASAPP desk. bitmap: 0: null, 1: 'VOICE', 2: 'DESK', 4: 'ENGAGEMENT', 8: 'INACTIVITY' NULL for non voice issues | 0, 1, 2, 5, 7 | | | 2020-02-19 00:00:00 | 2020-02-19 00:00:00 | no | | | | | | desk\_mode\_string | varchar(191) | Decodes the desk\_mode flag. Current possible values (Null, 'VOICE', 'VOICE\_DESK', 'VOICE\_DESK\_ENGAGEMENT','VOICE\_INACTIVITY'). NULL for non voice issues. | VOICE\_DESK | | | 2020-02-19 00:00:00 | 2020-02-19 00:00:00 | no | | | | | | merged\_from\_issue\_id | bigint | The issue id before the merge | 21352352 | | | 2020-06-30 00:00:00 | 2020-06-30 00:00:00 | no | | | | | | merged\_ts | timestamp | the time the merge occurred | 2019-11-08T14:00:06.957000+00:00 | | | 2020-06-30 00:00:00 | 2020-06-30 00:00:00 | no | | | | | | exclusive\_phrase\_auto\_complete\_msgs | bigint | Count of utterances where at least one phrase autocomplete was accepted/sent and no other augmentation was used. | | | | 2021-08-02 00:00:00 | 2021-08-02 00:00:00 | no | | | | | | autopilot\_ending\_msgs\_ct | integer | Number of autopilot endings | 2 | | | 2024-04-19 00:00:00 | 2024-04-19 00:00:00 | no | | | | | ### Table: queue\_check\_ins Exports for each 15 min window of Queue Check in events **Sync Time:** 1h **Unique Condition:** company\_id, issue\_id, customer\_id, check\_in\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :---------------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2020-01-02 00:00:00 | 2020-01-02 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2020-01-02 00:00:00 | 2020-01-02 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2020-01-02 00:00:00 | 2020-01-02 00:00:00 | no | | | | | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2020-01-02 00:00:00 | 2020-01-02 00:00:00 | no | | | | | | check\_in\_ts | timestamp without time zone | Timestamp at which the check in message was prompted to the customer. | 2018-06-10 14:23:00 | | | 2020-01-02 00:00:00 | 2020-01-02 00:00:00 | no | | | | | | wait\_time\_threshold\_ts | timestamp without time zone | Timestamp at which the queue wait time threshold was reached. | 2018-06-10 14:22:58 | | | 2020-01-02 00:00:00 | 2020-01-02 00:00:00 | no | | | | | | check\_in\_result | character varying(9) | The result of the check in message, either the customer 'Accepted' or was 'Dequeued'. | 'Dequeued' | | | 2020-01-02 00:00:00 | 2020-01-02 00:00:00 | no | | | | | | check\_in\_result\_ts | timestamp without time zone | Timestamp at which the result of the check in message was received. | 2018-06-10 14:24:00 | | | 2020-01-02 00:00:00 | 2020-04-24 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-03-23 00:00:00 | 2019-03-23 00:00:00 | no | | | | | | wait\_time\_threshold\_ct\_distinct | bigint | Quantity of times the queue wait time threshold was reached before getting the check in message. | 2 | | | 2020-04-25 00:00:00 | 2020-04-25 00:00:00 | no | | | | | | queue\_id | integer | The ASAPP queue identifier which the issue was placed. | 20001 | | | 2020-06-11 00:00:00 | 2020-06-11 00:00:00 | no | | | | | | queue\_name | varchar(255) | The queue name which the issue was placed. | Acme Residential, Acme Wireless | | | 2020-06-11 00:00:00 | 2020-06-11 00:00:00 | no | | | | | | opportunity\_ts | timestamp | Timestamp of the opportunity event | 2023-01-02 19:58:06 | | | 2020-01-02 00:00:00 | 2020-01-02 00:00:00 | no | | | | | ### Table: quick\_reply\_buttons The quick\_reply\_button\_interaction table contains information associated with a specific quick\_reply\_button, its final intent and any aggregation counts over the day (e.g. escalated\_to\_chat, escalation\_requested). Aggregated for a 24 hour period. Only ended issues are counted. **Sync Time:** 1d **Unique Condition:** company\_id, company\_subdivision, company\_segments, final\_intent\_code, quick\_reply\_button\_text, escalated\_to\_chat, escalation\_requested, quick\_reply\_button\_index | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :----------------------------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | final\_intent\_code | character varying(255) | The last intent code of the flow which the user navigated. | PAYBILL | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | escalated\_to\_chat | bigint | 1 if an issue escalated to live chat, 0 if not. | 1 | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | escalation\_requested | integer | 1 if customer was asked to wait for an agent or if a customer asked to speak to an agent. | 1 | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | quick\_reply\_button\_text | character varying(65535) | The text of the quick reply button. | 'Billing' | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | quick\_reply\_button\_index | integer | The position of the quick reply button shown. | (1,2,3) | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | quick\_reply\_displayed\_count | bigint | The number of times this button was shown. | 42 | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | quick\_reply\_selected\_count | bigint | The number of times this button was selected. | 42 | | | 2019-02-12 00:00:00 | 2019-02-12 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: reps The rep table contains a listing of data regarding each rep. Expected data includes their name, the rep id, their slot configuration and the rep status. This rep data is collected daily. **Sync Time:** 1d **Unique Condition:** rep\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------- | :-------------------------- | :---------------------------------------------------------------------------------- | :----------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | created\_ts | timestamp | The timestamp of when record gets generated. | 2019-02-19T21:31:43+00:00 | | | 2018-09-21 00:00:00 | 2018-09-21 00:00:00 | no | | | | | | agent\_id | bigint | deprecated: 2019-09-25 | 123008 | | | 2018-09-21 00:00:00 | 2018-09-21 00:00:00 | no | | | | | | crm\_agent\_id | varchar(255) | deprecated: 2019-09-25 | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-09-21 00:00:00 | 2018-09-21 00:00:00 | no | | | | | | name | varchar(255) | The rep name as imported from the CRM. | Smith, Anne | | | 2018-09-21 00:00:00 | 2018-09-21 00:00:00 | no | | | | | | max\_slot | smallint | The number of slots or concurrent conversations this rep can have at the same time. | 4 | | | 2018-09-21 00:00:00 | 2018-09-21 00:00:00 | no | | | | | | disabled\_time | timestamp without time zone | The time when this rep was removed from the ASAPP system. | 2019-02-27T12:56:34+00:00 | | | 2018-09-21 00:00:00 | 2018-09-21 00:00:00 | no | | | | | | agent\_status | | deprecated: 2019-09-25 | | | | 2018-09-21 00:00:00 | 2018-09-21 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2018-09-21 00:00:00 | 2018-09-21 00:00:00 | no | | | | | | crm\_rep\_id | character varying(191) | The rep identifier from the client system. | monica.rosa | | | 2019-09-26 00:00:00 | 2019-09-26 00:00:00 | no | | | | | | rep\_status | varchar(255) | The last known status of the rep at UTC midnight. | 80001 | | | 2019-09-26 00:00:00 | 2019-09-26 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: rep\_activity The rep\_activity table tracks status and slot information of each agent over time, including time spent in each status and time utilized in chats. In this table, the data is captured in 15 minute increments throughout the day. instance\_ts is actually the 15-minute window in question, and is part of the primary key. It does not indicate the last time a relevant event happened as in other tables. Windows may be re-stated when information from a later window amends them, for example to account for additional utilized time. **Sync Time:** 1h **Unique Condition:** instance\_ts, rep\_id, status\_id, in\_status\_starting\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------------ | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The start of the 15-minute time window under observation. As an example, for a 15 minute interval an instance\_ts of 12:30 implies activity from 12:30 to 12:45. | 2019-11-08 14:00:00 | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | update\_ts | timestamp without time zone | The timestamp at which the last event for this record occurred. This usually represents the status end or the end of the last conversation handled in this status. | 2018-06-10 14:24:00 | | | 2019-12-16 00:00:00 | 2019-12-16 00:00:00 | no | | | | | | export\_ts | timestamp | The end of the time window for which this record was exported. This is used for de-duplicating records. | 2018-06-10 14:30:00 | | | 2019-12-16 00:00:00 | 2019-12-16 00:00:00 | no | | | | | | agent\_id | bigint | deprecated: 2019-09-25 | 123008 | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | The company subdivision relates to the customer issue and is not relevant to reps. Intentionally left blank. | ACMEsubcorp | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | company\_segments | varchar(255) | The company segments field relates to the customer issue and is not relevant to reps. Intentionally left blank. | marketing,promotions | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | agent\_name | | deprecated: 2019-09-25 | | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | status\_id | character varying(65535) | The ASAPP identifier for a given status. | OFFLINE, 1 | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | status\_description | character varying(65535) | The human text name for a given status. | | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | orig\_status\_description | character varying(191) | The text of the status before alteration for disconnects. | Available, Away, Coffee Break, Active | | | 2020-01-07 00:00:00 | 2020-01-07 00:00:00 | no | | | | | | in\_status\_starting\_ts | timestamp without time zone | Inside this 15m window, what time did the agent enter this status. | 2020-01-08T19:32:38.352000+00:00 | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | linear\_ute\_time | double precision | Time in seconds the agent spent handling at least one issue in this status within this 15-minute time window. | 253.34, 0.0, 5.046 | | | 2019-03-05 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | cumul\_ute\_time | double precision | The collective time in seconds the agent spent handling all issues in this status within this 15-minute time window. This time may exceed the status time due to concurrency slots. | 498.82, 0.0, 0.428 | | | 2019-03-05 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | unutilized\_time | double precision | The time in seconds the agent spent not handling any issues in this status within this 15-minute time window. | 37.60, 0.0 | | | 2019-03-05 00:00:00 | 2019-03-05 00:00:00 | no | | | | | | window\_status\_time | double precision | The length of time which the agent was inside this status in seconds. | 0.107, 900.0 | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | total\_status\_time | double precision | Time in seconds that the agents spent in this status including contiguous time spent outside of this 15-minute time window. | 5.046, 0.107 | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | max\_slots | integer | The number of issue slots or concurrency values which the rep set for themselves for this window. | 3, 2 | | | 2018-10-01 00:00:00 | 2018-10-01 00:00:00 | no | | | | | | status\_end\_ts | timestamp without time zone | The timestamp at which this agent exited the designated state. Note that this time may be null or after the next instance\_ts, which implies that the agent did not change statuses within this 15-minute window. | 2018-06-10 14:23:00 | | | 2020-01-07 00:00:00 | 2020-01-07 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_name | varchar(191) | The name of this rep. Jane Doe | John | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | desk\_mode | varchar(191) | The mode of the desktop which the agent is logged into. Modes include CHAT or VOICE. | 'CHAT', 'VOICE' | | | 2019-12-10 00:00:00 | 2019-12-10 00:00:00 | no | | | | | | last\_dispositioned\_ts | timestamp | Timestamp at which rep gets unassigned for a given rep status started at a given time | 2018-06-10 14:24:00 | | | 2024-05-29 00:00:00 | 2024-05-29 00:00:00 | no | | | | | ### Table: rep\_assignment\_disposition This view contains information relating to rep-disposition responses. **Sync Time:** 1h **Unique Condition:** issue\_id, rep\_id, rep\_assigned\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :--------------------------------------------- | :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | rep\_assigned\_ts | timestamp without time zone | The timestamp at which the issue was assigned to the rep. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | disposition\_event | character varying(65535) | The event type associated with the disposition event | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | disposition\_notes\_txt | character varying(65535) | Disposition notes associated with the disposition event | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | disposition\_notes\_valid | boolean | Boolean value to indicate if the notes are different than blank or null. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | crm\_offered\_ts | timestamp without time zone | Timestamp of the last CRM offered event. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | crm\_outcome\_ts | timestamp without time zone | Timestamp of the last CRM outcome event. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | crm\_is\_success | boolean | Boolean value to indicate if the disposition event is successfully sent to partner CRM | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | crm\_error\_type | character varying(65535) | This field indicates the type of an error occurred in the pipeline. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | crm\_error\_source | character varying(65535) | This field indicates where in the pipeline the event is failed to publish. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | presented\_tags | character varying(65535) | Unique list of all summary tags presented to agent for this assignment. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | selected\_tags | character varying(65535) | Unique list of all summary tags selected by agent for this assignment. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | notes\_presented\_tags | character varying(65535) | Unique list of the summary tags presented to agent at the OTF NOTES state for this assignment. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | notes\_selected\_tags | character varying(65535) | Unique list of the summary tags selected by agent at the OTF NOTES state for this assignment. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | assignment\_end\_presented\_tags | character varying(65535) | Unique list of the summary tags presented to agent at the end of assignment state. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | assignment\_end\_selected\_tags | character varying(65535) | Unique list of the summary tags selected by agent at the end of assignment state. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | presented\_tags\_ct\_distinct | bigint | Distinct count of all summary tags presented to agent for this assignment. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | selected\_tags\_ct\_distinct | bigint | Distinct count of all summary tags selected by agent for this assignment. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | notes\_presented\_tags\_ct\_distinct | bigint | Distinct count of the summary tags presented to agent at the OTF NOTES state for this assignment. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | notes\_selected\_tags\_ct\_distinct | bigint | Distinct count of the summary tags selected by agent at the OTF NOTES state for this assignment. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | assignment\_end\_presented\_tags\_ct\_distinct | bigint | Distinct count of the summary tags presented to agent at the end of assignment state. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | assignment\_end\_selected\_tags\_ct\_distinct | bigint | Distinct count of the summary tags selected by agent at the end of assignment state. | | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2020-09-03 00:00:00 | 2020-09-03 00:00:00 | no | | | | | | auto\_summary\_txt | character varying(65535) | Text of the automatic generative summary of this assignment, if applicable. Note that this field will be null of no auto summary could be found or if the feature is not enabled. | | | | 2023-02-16 00:00:00 | 2023-02-16 00:00:00 | no | | | | | ### Table: rep\_attributes The rep attributes table contains various data associated with a rep such as their given role. This table may not exist or may be empty if the client chooses to use rep\_hierarchy instead. This is a daily snapshot of information. **Sync Time:** 1d **Unique Condition:** rep\_attribute\_id, rep\_id, created\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------- | :---------------------- | :------------------------------------------------------- | :----------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | created\_ts | timestamp | The date this agent was created. | 2019-06-24T18:02:05+00:00 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | agent\_id | bigint | deprecated: 2019-09-25 | 123008 | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | attribute\_name | character varying(64) | The attribute key value. | role, companygroup, jobcode | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | attribute\_value | character varying(1024) | The attribute value associated with the attribute\_name. | manager, representative, lead | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | agent\_attribute\_id | | deprecated: 2019-09-25 | | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | external\_agent\_id | varchar(255) | deprecated: 2019-09-25 | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_attribute\_id | bigint | The ASAPP identifier for this attribute. | 1200001 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | external\_rep\_id | varchar(255) | Client-provided identifier for the rep. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: rep\_augmentation The rep\_augmentation table tracks a specific issue and rep; and calculates metrics on augmentation types and counts of usages of augmentation. This table will allow billing for the augmentation feature per each issue. **Sync Time:** 1h **Unique Condition:** issue\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :-------------------------------------- | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | customer\_id | bigint | The ASAPP internal customer identifier. | 123008 | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | agent\_id | bigint | deprecated: 2019-09-25 | 123008 | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | external\_customer\_id | varchar(255) | The customer identifier as provided by the client. | | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | conversation\_end\_ts | timestamp | Timestamp when the conversation ended. | 2018-06-23 21:23:53 | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | auto\_suggest\_msgs | bigint | The number of autosuggest prompts used by the rep. | 3 | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | auto\_complete\_msgs | bigint | The number of autocompletion prompts used by the rep. | 2 | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | did\_customer\_timeout | boolean | Boolean value indicating whether the customer timed out. | false, true | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | is\_rep\_resolved | boolean | Boolean value indicating whether the rep marked this conversation resolved. | true, false | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | is\_billable | boolean | Boolean value indicating whether the rep marked the conversation resolved after using autocomplete or autosuggest. | true, false | | | 2018-11-27 00:00:00 | 2018-11-27 00:00:00 | no | | | | | | custom\_auto\_suggest\_msgs | bigint | The number of custom autocompletion prompts used by the rep (is a subset of auto\_suggest\_msgs). | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | custom\_auto\_complete\_msgs | bigint | The number of custom autosuggest prompts used by the rep (is a subset of auto\_complete\_msgs). | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | drawer\_msgs | bigint | The number of custom drawer messages used by the rep. | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | kb\_search\_msgs | bigint | The number of messages used from knowledge base search. | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | kb\_recommendation\_msgs | bigint | The number of messages used from knowledge base recommendations. | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_id | varchar(191) | Last rep\_id that worked on this issue. | 123008 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | autopilot\_timeout\_msgs | bigint | Number of autopilot timeout messages. | 2 | | | 2020-06-11 00:00:00 | 2020-06-11 00:00:00 | no | | | | | | phrase\_auto\_complete\_presented\_msgs | integer | Count of utterances where at least one phrase autocomplete was suggested/presented. | | | | 2020-06-24 00:00:00 | 2020-06-24 00:00:00 | no | | | | | | cume\_phrase\_auto\_complete\_presented | integer | Total number of phrase autocomplete suggestions per issue. | | | | 2020-06-24 00:00:00 | 2020-06-24 00:00:00 | no | | | | | | phrase\_auto\_complete\_msgs | integer | Count of utterances where at least one phrase autocomplete was accepted/sent. | | | | 2020-06-24 00:00:00 | 2020-06-24 00:00:00 | no | | | | | | cume\_phrase\_auto\_complete | integer | Total number of phrase autocompletes per issue. | | | | 2020-06-24 00:00:00 | 2020-06-24 00:00:00 | no | | | | | | exclusive\_phrase\_auto\_complete\_msgs | integer | Count of utterances where at least one phrase autocomplete was accepted/sent and no other augmentation was used. | | | | 2020-06-24 00:00:00 | 2020-06-24 00:00:00 | no | | | | | ### Table: rep\_convos The rep\_convos table captures metrics associated with a rep and an issue. Expected metrics include "average response time", "cumulative customer response time", "disposition type" and "handle time". This data is captured in 15 minute window increments. **Sync Time:** 1h **Unique Condition:** issue\_id, rep\_id, issue\_assigned\_ts | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :-------------------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | agent\_id | bigint | deprecated: 2019-09-25 | 123008 | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | issue\_assigned\_ts | timestamp without time zone | The time when an issue was first assigned to this rep. | 2019-10-31T18:37:37.848000+00:00 | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | agent\_first\_response\_ts | | deprecated: 2019-09-25 | | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | dispositioned\_ts | timestamp | The time when the issue left the rep's screen. | 2019-10-31T18:46:39.869000+00:00 | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | customer\_end\_ts | timestamp without time zone | The time at which the customer ended the issue. This may be NULL. | 2019-10-31T18:46:12.559000+00:00 | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | disposition\_event\_type | varchar(255) | Event type indicating how the conversation ended. | rep, customer, batch (system/auto ended), batch | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | cust\_utterance\_count | bigint | The count of customer utterances from issue\_assigned\_ts to dispositioned\_ts. | 5 | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | rep\_utterance\_count | bigint | The count of rep utterances from issue\_assigned\_ts to dispositioned\_ts. | 5 | | | 2018-09-01 00:00:00 | 2018-09-01 00:00:00 | no | | | | | | handle\_time\_seconds | double precision | Total time in seconds that reps spent handling the issue, from assignment to disposition. | 428.9 | | | 2019-03-19 00:00:00 | 2019-03-20 00:00:00 | no | | | | | | lead\_time\_seconds | double precision | Total time in seconds the customer spent interacting during the conversation, from assignment to last utterance. | 320.05 | | | 2019-03-19 00:00:00 | 2019-03-20 00:00:00 | no | | | | | | wrap\_up\_time\_seconds | double precision | Total time in seconds spent by reps wrapping up the conversation, calculated as the difference between handle and lead time. | 3.614 | | | 2019-03-19 00:00:00 | 2019-03-20 00:00:00 | no | | | | | | rep\_response\_ct | int | The total count of responses by the rep. Max of one message following a customer message counted as a response. | 5 | | | 2019-05-17 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | cust\_response\_ct | int | The total count of responses by the customer. Max of one message following a rep message counted as a response. | 12 | | | 2019-05-17 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | auto\_suggest\_msgs | bigint | The number of autosuggest prompts used by the rep (inclusive of custom\_auto\_suggest\_msgs). | 5 | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | auto\_complete\_msgs | bigint | The number of autocompletion prompts used by the rep (inclusive of custom\_auto\_complete\_msgs). | 5 | | | 2019-07-29 00:00:00 | 2019-07-29 00:00:00 | no | | | | | | custom\_auto\_suggest\_msgs | bigint | The number of custom autocompletion prompts used by the rep (is a subset of auto\_suggest\_msgs). | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | custom\_auto\_complete\_msgs | bigint | The number of custom autosuggest prompts used by the rep (is a subset of auto\_complete\_msgs). | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | drawer\_msgs | bigint | The number of custom drawer messages used by the rep. | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | kb\_search\_msgs | bigint | The number of messages used by the rep from the knowledge base searches. | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | kb\_recommendation\_msgs | bigint | The number of messages used by the rep from the knowledge base recommendations. | 2 | | | 2019-09-25 00:00:00 | 2019-09-25 00:00:00 | no | | | | | | is\_ghost\_customer | boolean | Boolean value indicating if the customer was assigned a rep but never responded. | true, false | | | 2019-05-17 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | first\_response\_seconds | bigint | The total time taken by the rep to send the first message, once the message was assigned. | 26.148 | | | 2019-05-17 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | cume\_rep\_response\_seconds | bigint | The total time across the assignment for the rep to send response messages. | 53.243 | | | 2019-05-17 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | max\_rep\_response\_seconds | double precision | The maximum time across the assignment for the rep to send a response message. | 77.965 | | | 2019-05-17 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | avg\_rep\_response\_seconds | double precision | The average time across assignment for the rep to send response messages. | 22.359 | | | 2019-05-17 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | cume\_cust\_response\_seconds | bigint | The total time across the assignment for the customer to send response messages. | 332.96 | | | 2019-05-17 00:00:00 | 2019-05-17 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_first\_response\_ts | datetime | The time when a rep first responded to the customer. | 2019-10-31T18:38:03.996000+00:00 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | hold\_ct | bigint | The total count that this rep was part of a hold call. This field is not applicable to chat. | 1 | | | 2019-11-19 00:00:00 | 2019-11-19 00:00:00 | no | | | | | | cume\_hold\_time\_seconds | double precision | The total duration of time the rep placed the customer on hold across the call. This field is not applicable to chat. 93.30 | | | | 2019-11-19 00:00:00 | 2019-11-19 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | client\_mode | varchar(191) | The communication mode used by the customer for a given issue (CHAT or VOICE). | CHAT, VOICE | | | 2019-12-10 00:00:00 | 2019-12-10 00:00:00 | no | | | | | | cume\_cross\_talk\_seconds | numeric(38,5) | Total duration of time where both agent and customer were speaking. Only relevant for voice client mode. | | | | 2019-12-28 00:00:00 | 2019-12-28 00:00:00 | no | | | | | | desk\_mode\_flag | bigint | Bitmap encodes if agent handled voice-issue ASAPP desk, had engagement with ASAPP desk. bitmap: 0: null, 1: 'VOICE', 2: 'DESK', 4: 'ENGAGEMENT', 8: 'INACTIVITY' NULL for non voice issues | 0, 1, 2, 5, 7 | | | 2020-02-19 00:00:00 | 2020-02-19 00:00:00 | no | | | | | | desk\_mode\_string | varchar(191) | Decodes the desk\_mode flag. Current possible values (Null, 'VOICE', 'VOICE\_DESK', 'VOICE\_DESK\_ENGAGEMENT','VOICE\_INACTIVITY'). NULL for non voice issues. | VOICE\_DESK | | | 2020-02-19 00:00:00 | 2020-02-19 00:00:00 | no | | | | | | queue\_id | integer | The ASAPP queue identifier which the issue was placed. | 20001 | | | 2021-04-08 00:00:00 | 2021-04-08 00:00:00 | no | | | | | | autopilot\_timeout\_msgs | integer | Number of autopilot timeout messages. | 2 | | | 2021-08-02 00:00:00 | 2021-08-02 00:00:00 | no | | | | | | exclusive\_phrase\_auto\_complete\_msgs | integer | Count of utterances where at least one phrase autocomplete was accepted/sent and no other augmentation was used. | | | | 2021-08-02 00:00:00 | 2021-08-02 00:00:00 | no | | | | | | custom\_click\_to\_insert\_msgs | integer | Total count of custom click\_to\_insert messages. | | | | 2021-08-02 00:00:00 | 2021-08-02 00:00:00 | no | | | | | | ms\_auto\_suggest\_msgs | integer | Total count of multi-sentence auto-suggest messages. | | | | 2021-08-02 00:00:00 | 2021-08-02 00:00:00 | no | | | | | | ms\_auto\_complete\_msgs | integer | Total count of multi-sentence auto-complete messages. | | | | 2021-08-02 00:00:00 | 2021-08-02 00:00:00 | no | | | | | | ms\_auto\_suggest\_custom\_msgs | integer | Total count of custom multi-sentence auto-suggest messages. | | | | 2021-08-02 00:00:00 | 2021-08-02 00:00:00 | no | | | | | | ms\_auto\_complete\_custom\_msgs | integer | Total count of custom multi-sentence auto-complete messages. | | | | 2021-08-02 00:00:00 | 2021-08-02 00:00:00 | no | | | | | | autopilot\_form\_msgs | bigint | Number of autopilot form messages. | 2 | | | 2021-08-02 00:00:00 | 2021-08-02 00:00:00 | no | | | | | | click\_to\_insert\_global\_msgs | integer | Number of click to insert messages. | 2 | | | 2023-02-15 00:00:00 | 2023-02-15 00:00:00 | no | | | | | | autopilot\_greeting\_msgs | bigint | Number of autopilot greeting messages. | 2 | | | 2023-02-15 00:00:00 | 2023-02-15 00:00:00 | no | | | | | | augmented\_msgs | bigint | Number of augmented messages. | 2 | | | 2023-02-22 00:00:00 | 2023-02-22 00:00:00 | no | | | | | | autopilot\_ending\_msgs\_ct | integer | Number of autopilot endings | 2 | | | 2024-04-19 00:00:00 | 2024-04-19 00:00:00 | no | | | | | ### Table: rep\_hierarchy The rep\_hierarchy table contains the rep and their direct reports and their manager. This is a daily snapshot of rep hierarchy information. This table may be empty and if empty, then consult rep\_attributes. **Sync Time:** 1d **Unique Condition:** subordinate\_rep\_id, superior\_rep\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :---------------------- | :---------------------- | :------------------------------------------------------------------------------------------------------- | :----------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | subordinate\_agent\_id | | deprecated: 2019-09-25 | | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | superior\_agent\_id | | deprecated: 2019-09-25 | | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | reporting\_relationship | character varying(1024) | Relationship between subordinate and superior reps, e.g. "superiors\_superior" for skip-level reporting. | superior, superiors\_superior | | | 2018-08-14 00:00:00 | 2018-08-14 00:00:00 | no | | | | | | subordinate\_rep\_id | bigint | ASAPP rep identifier that is the subordinate of the superior\_rep\_id. | 110001 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | superior\_rep\_id | bigint | Superior rep id that is the superior of the subordinate\_rep\_id. | 20001 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | ### Table: rep\_utilized The rep\_utilized table tracks a rep's activity and how much time they spend in each state. It shows utilization time and total minutes per state, recorded in 15-minute intervals throughout the day. The instance\_ts field represents the 15-minute window and is part of the primary key. It doesn’t show the most recent event like in other tables. The data may be updated if later information changes it, such as adding more utilization time. Utilization refers to the rep’s efficiency. **Sync Time:** 1h **Unique Condition:** instance\_ts, rep\_id, desk\_mode, max\_slots, company\_marker | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------------------------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The start of the 15-minute time window under observation. As an example, for a 15 minute interval an instance\_ts of 12:30 implies activity from 12:30 to 12:45. | 2019-11-08 14:00:00 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | update\_ts | timestamp | Timestamp at which the last event for this record occurred - usually the last status end or conversation end that was active in this window deprecated: 2020-11-09 | 2019-06-10 14:24:00 | | | 2020-01-29 00:00:00 | 2020-01-29 00:00:00 | no | | | | | | export\_ts | timestamp | The end of the time window for which this record was exported. This is used for de-duplicating records. | 2019-06-10 14:30:00 | | | 2020-01-29 00:00:00 | 2020-01-29 00:00:00 | no | | | | | | company\_id | bigint | The ASAPP identifier of the company or test data source. | 10001 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | Relates to the customer issue, not relevant to reps. Intentionally left blank. | ACMEsubcorp | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | company\_segments | varchar(255) | Relates to the customer issue, not relevant to reps. Intentionally left blank. | marketing,promotions | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | rep\_name | varchar(191) | The name of the rep. | John Doe | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | max\_slots | integer | Maximum chat concurrency slots enabled for this rep. | 2 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_logged\_in\_min | bigint | Cumulative Logged In Time (min) -- Total cumulative time (linear time x max slots) the rep logged into the agent desktop. | 120 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | lin\_logged\_in\_min | bigint | Linear Logged In Time (min) -- Total linear time rep logged into agent desktop. | 60 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_avail\_min | bigint | Cumulative Available Time (min) -- Total cumulative time (linear time x max slots) the rep logged into agent desktop while in the "Available" state. | 90 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | lin\_avail\_min | bigint | Linear Available Time (min) -- Total linear time the rep logged into the agent desktop while in the "Available" state. | 45 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_busy\_min | bigint | Cumulative Busy Time (min) -- Total cumulative time (linear time x max slots) the rep logged into agent desktop while in a "Busy" state. | 30 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | lin\_busy\_min | bigint | Linear Busy Time (min) -- Total linear time rep logged into agent desktop while in a "Busy" state. | 15 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_prebreak\_min | bigint | Cumulative Busy Time - Pre-Break (min) -- Total cumulative time (linear time x max slots) rep logged into agent desktop while in the Pre-Break version of the "Busy" state. | 10 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | lin\_prebreak\_min | bigint | Linear Busy Time - Pre-Break (min) -- Total linear time the rep logged into Agent Desktop while in the Pre-Break version of Busy state | 5.6 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_ute\_total\_min | bigint | Cumulative Utilized Time (min) -- Total cumulative time (linear time x active slots) the rep logged into agent desktop and utilized over all states. | 27.71 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | lin\_ute\_total\_min | bigint | Linear Utilized Time (min) -- Total linear time rep logged into agent desktop and utilized over all states. | 5.5 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_ute\_avail\_min | bigint | Cumulative Utilized Time While Available (min) -- Total cumulative time (linear time x active slots) rep logged into agent desktop and utilized while in the "Available" state. | 11.5 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | lin\_ute\_avail\_min | bigint | Linear Utilized Time While Available (min) -- Total linear time rep logged into agent desktop and utilized while in the "Available" state. | 5.93 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_ute\_busy\_min | bigint | Cumulative Busy Time - While Chatting (min) -- Total cumulative time (linear time x active slots) rep logged into agent desktop while in a Busy state and handling at least one assignment. | 7.38 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | lin\_ute\_busy\_min | bigint | Linear Utilized Time While Busy (min) -- Total linear time rep logged into agent desktop while in a Busy state and handling at least one assignment. | 3.44 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_ute\_prebreak\_min | bigint | Cumulative Utilized Time While Busy Pre-Break (min) -- Cumulative time rep logged into agent desktop and utilized while in the "Pre-Break Busy" state. | 5.35 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | lin\_ute\_prebreak\_min | bigint | Linear Utilized Time While Busy Pre-Break (min) -- Linear time rep logged into agent desktop and utilized while in the "Pre-Break Busy" state. | 3.65 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | labor\_min | bigint | Total linear time rep logged into agent desktop in the available state, plus cumulative time rep was handling issues in any "Busy" state. | 18.44 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | busy\_clicks\_ct | bigint | Busy Clicks -- Number of times the rep moved from an active to a busy state. | 1 | | | 2019-05-10 00:00:00 | 2019-05-10 00:00:00 | no | | | | | | ute\_ratio | float | Utilization ratio - cumulative utilized time divided by linear total potential labor time. | 1.71 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | act\_ratio | float | Active utilization ratio - cumulative utilized time in the available state divided by total labor time. | 1.67 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2025-01-27 00:00:00 | no | | | | | | desk\_mode | varchar(191) | The mode of the desktop that the agent is logged into - whether CHAT or VOICE. | 'CHAT', 'VOICE' | | | 2019-12-10 00:00:00 | 2019-12-10 00:00:00 | no | | | | | | lin\_utilization\_level\_over\_min | bigint | Total linear time in minutes when rep has no assignment Total linear time in minute when rep's assignments is greater than rep's max slot | 120 | | | 2020-11-09 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | lin\_utilization\_level\_full\_min | bigint | Total linear time in minute when rep's assignments is equal to rep's max slot | 120 | | | 2020-11-09 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | lin\_utilization\_level\_light\_min | bigint | Total linear time in minute when rep's assignments is less than rep's max slot | 120 | | | 2020-11-09 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | workload\_level\_no\_min | bigint | Total time in minute when rep has no active assignment | 120 | | | 2020-11-09 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | workload\_level\_over\_min | bigint | Total time in minute when rep's active assignment is greater than rep's max slot | 120 | | | 2020-11-09 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | workload\_level\_full\_min | bigint | Total time in minute when rep's active assignment is equal to rep's max slot | 120 | | | 2020-11-09 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | workload\_level\_light\_min | bigint | Total time in minute when rep's active assignment is less than rep's max slot | 120 | | | 2020-11-09 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | flex\_protect\_min | bigint | Total time in minute when rep is flex protected | 120 | | | 2020-11-09 00:00:00 | 2020-11-09 00:00:00 | no | | | | | | cum\_weighted\_min | | | | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_weighted\_seconds | bigint | Total effort\_workload when a rep has active assignments | 10 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_ute\_weighted\_avail\_unflexed\_seconds | bigint | Total time weighted in seconds when a rep is available | 160 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | | cum\_weighted\_inactive\_seconds | bigint | Total effort\_workload when a rep has no active assignments | 10 | | | 2019-03-11 00:00:00 | 2019-03-11 00:00:00 | no | | | | | ### Table: sms\_events Exports for each 15 min window of SMS flow events **Sync Time:** 1h **Unique Condition:** company\_id, sms\_flow\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :---------------------------------- | :-------------------------- | :--------------------------------------------------------------------------------------------- | :---------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | sms\_flow\_id | character varying(65535) | The flow identifier. | 019bf9e4-a01a-4420-b419-459659a1b50e | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | external\_session\_id | character varying(65535) | The session identifier received from the client. | 772766038 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | message\_sent\_result | character varying(6) | The status of another SMS request received from the 3rd party SMS provider. | 'Sent' | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | message\_sent\_result\_status\_code | character varying(65535) | The failure reason received from 3rd party SMS provider. | 30001 (Queue Overflow), 30004 (Message Blocked) | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | message\_character\_count | integer | The SMS message's character count. | 29 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | partner\_triggered\_ts | timestamp without time zone | The date and time in which a partner sends an SMS request to ASAPP. | 2018-03-03 12:23:52 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | provider\_sent\_ts | timestamp without time zone | The date and time in which ASAPP sends an SMS request from 3rd party SMS provider. | 2018-03-03 12:23:52 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | provider\_status\_ts | timestamp without time zone | The date and time in which the 3rd party SMS provider sends back the status of an SMS request. | 2018-03-03 12:23:52 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | company\_id | bigint | The ASAPP identifier of the company or test data source. | 10001 | | | 2019-11-08 00:00:00 | 2019-11-08 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-08 00:00:00 | 2020-03-23 00:00:00 | no | | | | | ### Table: transfers The purpose of the transfers table is to capture information associated with an issue transfer between reps. The data is captured per 15 minute window. **Sync Time:** 1h **Unique Condition:** company\_id, issue\_id, rep\_id, timestamp\_req | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | timestamp\_req | timestamp without time zone | The date and time when the transfer was requested. | 2019-06-11T13:27:09.470000+00:00 | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | timestamp\_reply | timestamp without time zone | The date and time when the transfer request was received. | 2019-06-11T13:31:58.537000+00:00 | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | agent\_id | bigint | deprecated: 2019-09-25 | 123008 | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2018-08-04 00:00:00 | 2018-08-04 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-10-04 00:00:00 | 2018-10-04 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-10-04 00:00:00 | 2018-10-04 00:00:00 | no | | | | | | requested\_agent\_transfer | | deprecated: 2019-09-25 | | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | group\_transfer\_to | character varying(65535) | The group identifier where the issue was transferred. | 20001 | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | group\_transfer\_to\_name | character varying(191) | The group name where the issue was transferred. | acme-mobile-eng | | | 2018-08-04 00:00:00 | 2018-08-04 00:00:00 | no | | | | | | group\_transfer\_from | character varying(65535) | The group identifier which transferred the issue. | 87001 | | | 2018-08-04 00:00:00 | 2018-08-04 00:00:00 | no | | | | | | group\_transfer\_from\_name | character varying(191) | The group name which transferred the issue. acme-residential-eng | | | | 2018-08-04 00:00:00 | 2018-08-04 00:00:00 | no | | | | | | actual\_agent\_transfer | | deprecated: 2019-09-25 | | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | accepted | boolean | A boolean flag indicating whether the transfer was accepted. | true, false | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | is\_auto\_transfer | boolean | A boolean flag indicating whether this was an auto-transfer. | true, false | | | 2019-07-22 00:00:00 | 2019-07-22 00:00:00 | no | | | | | | exit\_transfer\_event\_type | character varying(65535) | The event type which concluded the transfer. | TRANSFER\_ACCEPTED, CONVERSATION\_END | | | 2019-07-22 00:00:00 | 2019-07-22 00:00:00 | no | | | | | | transfer\_button\_clicks | bigint | The number of times a rep requested a transfer from transfer initiation to when the transfer was received. | 1 | | | 2019-08-22 00:00:00 | 2019-08-22 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | rep\_id | varchar(191) | The ASAPP rep/agent identifier. | 123008 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | requested\_rep\_transfer | bigint | The rep which requested the transfer. | 1070001 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | actual\_rep\_transfer | bigint | The rep which received the transfer. | 250001 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | requested\_group\_transfer\_id | bigint | The group identifier where the transfer was initially requested. | 123455 | | | 2019-12-13 00:00:00 | 2019-12-13 00:00:00 | no | | | | | | requested\_group\_transfer\_name | character varying(191) | The group name where the transfer was initially requested. | support | | | 2019-12-13 00:00:00 | 2019-12-13 00:00:00 | no | | | | | | route\_code\_to | varchar(191) | IVR routing code indicating the customer contact reason to which the issue is being transferred into | 2323 | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | | route\_code\_from | varchar(191) | IVR routing code indicating the customer contact reason from the previous assignment | 2323 | | | 2018-08-03 00:00:00 | 2018-08-03 00:00:00 | no | | | | | ### Table: utterances The purpose of the utterances table is to list out each utterance and associated data which was captured during a conversation. This table will include data associated with ongoing conversations which are unended. **Sync Time:** 1h **Unique Condition:** created\_ts, issue\_id, sender\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------- | :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | created\_ts | timestamp | The date and time which the message was sent. | 2019-12-17T17:11:41.626000+00:00 | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | conversation\_id | bigint | deprecated: 2019-09-25 | 21352352 | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | company\_subdivision | varchar(255) | String identifier for the company subdivision associated with the conversation. | ACMEsubcorp | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | company\_segments | varchar(255) | String with comma separated segments for the company enclosed by square brackets. | marketing,promotions | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | sequence\_id | integer | deprecated: 2019-09-26 | | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | sender\_id | bigint | The identifier of the person who sent the message. | | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | sender\_type | character varying(191) | The type of sender. | customer, bot, rep, rep\_note, rep\_whisper | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | utterance\_type | character varying(65535) | The type of utterance sent. | autosuggest, autocomplete, script, freehand | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | sent\_to\_agent | boolean | deprecated: 2019-09-25 | | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | utterance | character varying(65535) | Text sent from a bot or human (i.e. customer, rep, expert). | 'Upgrade current device', 'Is there anything else we can help you with?' | | | 2018-07-13 00:00:00 | 2018-07-13 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | sent\_to\_rep | boolean | A boolean flag indicating if an utterance was sent from a customer to a rep. | true, false | | | 2019-09-27 00:00:00 | 2019-09-27 00:00:00 | no | | | | | | utterance\_start\_ts | timestamp without time zone | This timestamp marks the time when a person began speaking in the voice platform. In chat platforms or non-voice generated messages, this timestamp will be NULL. | NULL, 2019-10-18T18:45:00+00:00 | | | 2019-12-06 00:00:00 | 2019-12-06 00:00:00 | no | | | | | | utterance\_end\_ts | timestamp without time zone | This timestamp marks the time when a person finished speaking in the voice platform. In chat platforms or non-voice generated messages, this timestamp will be NULL. | NULL, 2019-10-18T18:45:00+00:00 | | | 2019-12-06 00:00:00 | 2019-12-06 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2019-11-01 00:00:00 | 2024-05-24 00:00:00 | no | | | | | | event\_uuid | varchar(36) | A UUID uniquely identifying each utterance record | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2020-10-23 00:00:00 | 2020-10-23 00:00:00 | no | | | | | ### Table: voice\_intents The voice intents table includes fields that provide visibility to the customer's contact reason for the call **Sync Time:** 1h **Unique Condition:** issue\_id | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------ | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | :--------- | :---- | :------------------ | :------------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2021-08-10 00:00:00 | 2021-08-10 00:00:00 | no | | | | | | issue\_id | bigint | The ASAPP issue or conversation id. | 21352352 | | | 2021-08-10 00:00:00 | 2021-08-10 00:00:00 | no | | | | | | company\_id | bigint | DEPRECATED 2024-03-25 | 10001 | | | 2021-08-10 00:00:00 | 2021-08-10 00:00:00 | no | | | | | | voice\_intent\_code | varchar(255) | Voice intent code with the highest score associated to the issue | PAYBILL | | | 2021-08-10 00:00:00 | 2021-08-10 00:00:00 | no | | | | | | voice\_intent\_name | varchar(255) | Voice intent name with the highest score associated to the issue | Payment history | | | 2021-08-10 00:00:00 | 2021-08-10 00:00:00 | no | | | | | | company\_name | varchar(255) | Name of the company associated with the data. | acme | | | 2025-01-27 00:00:00 | 2025-01-27 00:00:00 | no | | | | | ### Table: vagafeedbacksurvey\_shown This feed displays all instances where a Virtual Agent or Generative Agent customer feedback survey was shown to a customer for an issue. **Sync Time:** 1h | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :------------------- | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------- | :--------- | :---- | :------------------ | :------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2025-11-05 00:00:00 | | no | | | | | | event\_ts | timestamp | The time of an given event. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2025-11-05 00:00:00 | | no | | | | | | company\_marker | varchar | Name of the company associated with the data. | acme corp | | | 2025-11-05 00:00:00 | | no | | | | | | customer\_id | varchar | Unique identifier generated by the ASAPP application for the customer. | abc123 | | | 2025-11-05 00:00:00 | | no | | | | | | issue\_id | varchar | Unique identifier generated by the ASAPP application for the issue or conversation. | abc123 | | | 2025-11-05 00:00:00 | | no | | | | | | intent\_code | varchar | The ASAPP internal code for a given intent. | ACCTNUM | | | 2025-11-05 00:00:00 | | no | | | | | | flow\_id | varchar | An ASAPP identifier assigned to a particular flow executed during a customer event or request. | 347bdddb-d3a1-45fc-bbcd-dbd3a175fc1c | | | 2025-11-05 00:00:00 | | no | | | | | | flow\_name | varchar | The ASAPP text name for a given flow which was executed during a customer event or request. | FirstChatMessage, AccountNumberFlow | | | 2025-11-05 00:00:00 | | no | | | | | | flow\_version | varchar | Version of the Flow | 1,2,3 | | | 2025-11-05 00:00:00 | | no | | | | | | flow\_type | varchar | Type of Flow | business, utility | | | 2025-11-05 00:00:00 | | no | | | | | | flow\_tags | varchar | Tags associated with the Flow | v1, v2 | | | 2025-11-05 00:00:00 | | no | | | | | | is\_external\_survey | boolean | Indicates if the survey form is owned by an external system | True or False | | | 2025-11-05 00:00:00 | | no | | | | | | client\_type | varchar | Type of client | web, mobile, etc. | | | 2025-11-05 00:00:00 | | no | | | | | | survey\_shown | varchar | Type of survey i.e Virtual Agent or Generative Agent | SURVEY\_FEEDBACK\_TYPE\_VIRTUAL\_AGENT or SURVEY\_FEEDBACK\_TYPE\_GENERATIVE\_AGENT | | | 2025-11-05 00:00:00 | | no | | | | | ### Table: vagafeedbacksurvey\_submitted This feed displays submitted results of all Virtual Agent or Generative Agent customer feedback surveys **Sync Time:** 1h | Column | Type | Description | Example | Aggregates | Notes | Date Added | Date Modified | Ignore | PII | release state | Specific Use | Feature Group | | :----------------- | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- | :--------- | :---- | :------------------ | :------------ | :----- | :-- | :------------ | :----------- | :------------ | | instance\_ts | timestamp | The time window of computed elements. This window is usually 15 minutes or 1 hour depending on the generation time. Times are rounded down to the nearest interval (for a time of 12:34 and an interval of 15m, this is 12:30). As an example, for a 15 minute interval an instance\_ts of 12:30 implies events from 12:30 -> 12:45. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2025-11-05 00:00:00 | | no | | | | | | event\_ts | timestamp | The time of an given event. All times are in UTC. | 2019-11-08 14:00:06.957000+00:00 | | | 2025-11-05 00:00:00 | | no | | | | | | company\_marker | varchar | Name of the company associated with the data. | acme corp | | | 2025-11-05 00:00:00 | | no | | | | | | customer\_id | varchar | Unique identifier generated by the ASAPP application for the customer. | abc123 | | | 2025-11-05 00:00:00 | | no | | | | | | issue\_id | varchar | Unique identifier generated by the ASAPP application for the issue or conversation. | abc123 or 123542 | | | 2025-11-05 00:00:00 | | no | | | | | | survey\_type | varchar | Type of survey i.e Virtual Agent or Generative Agent | SURVEY\_FEEDBACK\_TYPE\_VIRTUAL\_AGENT or SURVEY\_FEEDBACK\_TYPE\_GENERATIVE\_AGENT | | | 2025-11-05 00:00:00 | | no | | | | | | question | varchar | The question asked of the user. | VOC Score, endSRS rating, What did the agent do well, or what could the agent have done better? (1000 character limit) | | | 2025-11-05 00:00:00 | | no | | | | | | question\_category | varchar | The question category type. | rating, comment, levelOfEffort | | | 2025-11-05 00:00:00 | | no | | | | | | question\_type | varchar | The type of question. | rating, scale, radio | | | 2025-11-05 00:00:00 | | no | | | | | | answer | varchar | The customer's answer to the question. | 0, 1, 17, yes | | | 2025-11-05 00:00:00 | | no | | | | | | ordering | integer | The question ordering. | 0, 1, 3, 5 | | | 2025-11-05 00:00:00 | | no | | | | | Last Updated: 2025-05-08 23:56:05 UTC --- # Source: https://docs.asapp.com/agent-desk/digital-agent-desk/queues-and-routing/attributes-based-routing.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Attributes Based Routing > Learn how to use Attributes Based Routing (ABR) to route chats to the appropriate agent queue. Attributes Based Routing (ABR) uses a rules-based system to determine which agent queue should receive an incoming chat. ASAPP invokes ABR by default after our Machine Learning model classifies customer utterances to an intent and determines that the intent cannot be handled by an automated flow. ## Attributes of ABR Attributes can be any piece of information that customers can pass to ASAPP using the integrated SDKs. ASAPP natively defines the standard attributes below: * Intent - This is a code determined by running customer utterances through various different ML models. Ex: ACCTINFO, BILLING * Web URL - This is the webpage that invoked the SDK. You can use any part of the URL as a value to route on. Ex: [www.customer.com/consumer/support](http://www.customer.com/consumer/support), [www.customer.com/business/sales](http://www.customer.com/business/sales) * Channel - This is the channel the chat originated from. Ex: Web, iOS The ASAPP SDK defines additional parameters, which can also be used in ABR. You can define these parameters as part of the ContextProvider. * Company Subdivision Ex: divisionId1, subDivisionId2 * Segments Ex: NorthEast, USA, EMEA You can also define custom customer-specific attributes for routing. Customer Information allows definition of any number of attributes as key-value pairs, which you can set per chat and use for routing to specific agent queues. Refer to the Customer Information section for more details on defining custom attributes. ## Configuration ABR can use any or all of the above attributes to determine which queue receives a chat. The configuration offers extreme flexibility and can accommodate various complex rules including regular expression matches and multi-value matches. Contact your implementation manager to model the routing rules. ## Template for Submitting Rules Customers can create an Excel document with a sheet for each attribute they would like to define. The sheet name should be the name of the attribute and have two columns, one defining all the possible attribute values and the other column containing the name of the queue to be routed to. If you are going to use multiple attributes in any different combinations, then you should define these conditions in a separate sheet, dedicating a row for every unique combination. ASAPP will assume that Excel attribute names that do not follow the ASAPP standard are custom defined and passed in 'Customer Information'. See the [User Management](/agent-desk/digital-agent-desk/user-management) section for more information. ## Queue Management You can define queues based on business or technical needs. You can define any number of queues and follow any desired naming convention. You can apply business hours to queues individually. For more information on other features and functionality, contact your implementation manager. You can assign agents to one or more queues based on skills and requirements. Refer to [User Management](/agent-desk/digital-agent-desk/user-management) for more details. --- # Source: https://docs.asapp.com/agent-desk/virtual-agent/attributes.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Attributes ASAPP supports attributes that can be routed on to funnel customers to the right flow through [intent routing](/agent-desk/virtual-agent/intent-routing "Intent Routing"). Attributes tell the virtual agent who the customer is. For example, they indicate if a customer is currently authenticated, which channel the customer is using to communicate with your business, or which services and products the customer is engaged with. ## Attributes List The Attributes List contains all the attributes available for intent routing. Here, you'll find the following information displayed in table format: 1. **Attribute name:** Display name of the attribute 2. **Definition:** Indicates if the attribute is Standard or Custom. ASAPP natively supports Standard attributes. Custom attributes are added in accordance with your business requirements\* 3. **Type:** Indicates the value type of an attribute. There are two possible types: Boolean, or Value. a. **Boolean:** A boolean attribute includes two values. For example: Yes/No, True/False, On/Off. b. **Value:** A value attribute can include any number of values. For example: Market 1, Market 2, Market 3. 4. **Origin Key:** Exact value that the company passes to ASAPP. Contact your ASAPP team for more details on how to add a custom attribute. ## Attribute Details To view specific attribute details, click an **attribute name** to launch the details modal. 1. **Description:** Describes what the attribute is. 2. **Value ID:** Unique, non-editable key that the system directly passes to ASAPP for that attribute (can be non-human readable). 3. **Value name:** Display name for the value to describe what the attribute value is. These value names appear in intent routing for ease of use. Descriptions and value names can be edited. To modify these fields, make your changes and click **Save**. When you click, the system automatically saves changes, and changes take effect immediately. There is no support for versioning or adding new attributes and/or values at this time, please contact your ASAPP team for support in this area. --- # Source: https://docs.asapp.com/getting-started/setup/audit-logs.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Audit Logs > Learn how to view, search, and export audit logs to track changes in AI Console. All activities in AI Console are saved as events and are viewable in audit logs. These logs provide a detailed record of configuration changes made in AI-Console for AI Services and ASAPP Messaging. The system saves these records indefinitely, providing administrators with a comprehensive historical view of changes made to ASAPP services, including when they were made and by whom. Administrators of your ASAPP organization can access audit logs. Audit logs allow you to: * See the most recent changes made to every resource. * Investigate a particular historical change associated with a deployment. * Review activity for a given user or product over the course of weeks or months. To access Audit Logs: 1. Navigate to the AI-Console home page 2. Select Admin View of the audit logs landing page. The following list displays the resources being tracked: * **General** * Links * Custom entities * **Virtual Agent** * Flows * Intent routing * **AI Compose** * Global responses ## Audit Logs Entries For each audit log record, the system records the following fields: | Field | Description | | :------------ | :-------------------------------------------------------------------------------- | | Resource type | Type of resource modified. | | Resource name | Name of the resource modified. | | Event type | Type of event. Supported fields are create, deploy, undeploy, update, and delete. | | Environment | Environment where you deployed the resource. Only applicable for deploy events. | | User | Name of user who caused the event. | | Timestamp | Time and date the event occurred, in UTC format. | | Unique ID | (Optional) Unique identifier for the resource. | ## Searching Audit Logs Administrators can use the search bar to look for a specific resource name, or user. To search your audit logs, navigate to the search bar on the top-right corner of the screen. The search functionality searches for exact matches with either the resource name, or the user that made the change. Additionally, you can filter the results of the audit logs by using the filter dropdown menus. You can filter by the following fields: * Resource type * Event type * User * Date You can additionally click on the "timestamp" column to re-order the results by ascending or descending dates: Timestamp column highlighted on the Audit Logs main view. ## Exporting Audit Logs Administrators can download the audit logs as a CSV file to store and review later. If you export the audit logs as a .csv file after filtering them using the search bar or filters, the downloaded file will also be filtered. To download the audit logs as a .csv file: 1. Navigate to the Audit Logs section in AI Console. 2. Click on the download button, next to the search bar. The system will record data in audit logs from the time the feature is enabled. The system will not display historical activity retroactively. --- # Source: https://docs.asapp.com/apis/conversations/authenticate-a-user-in-a-conversation.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Authenticate a user in a conversation > Stores customer-specific authentication credentials for use in integrated flows. - Can be called at any point during a conversation - Commonly used at the start of a conversation or after mid-conversation authentication - May trigger additional actions, such as GenerativeAgent API signals to customer webhooks This API only accepts the customer-specific auth credentials; the customer is responsible for handling the specific authentication mechanism. ## OpenAPI ````yaml api-specs/conversations.yaml post /conversation/v1/conversations/{conversationId}/authenticate openapi: 3.0.1 info: title: Conversations API description: Operations to manage ASAPP conversations contact: email: api-info@asapp.com license: name: ASAPP Software License url: https://api.asapp.com/LICENSE version: '0.1' servers: - url: https://api.sandbox.asapp.com security: - API-ID: [] API-Secret: [] tags: - name: Conversations description: Operations to send conversational inputs to ASAPP AI services paths: /conversation/v1/conversations/{conversationId}/authenticate: post: tags: - Conversations summary: Authenticate a user in a conversation description: > Stores customer-specific authentication credentials for use in integrated flows. - Can be called at any point during a conversation - Commonly used at the start of a conversation or after mid-conversation authentication - May trigger additional actions, such as GenerativeAgent API signals to customer webhooks This API only accepts the customer-specific auth credentials; the customer is responsible for handling the specific authentication mechanism. operationId: postAuthenticate parameters: - name: conversationId description: The identifier for a conversation. in: path required: true schema: type: string pattern: ^[A-Z0-9]+$ requestBody: required: true content: application/json: schema: type: object description: >- Contains authentication information for a customer in a conversation. properties: streamId: type: string description: >- The unique identifier for the connection where responses should be sent. example: 97555020-0276-435f-8104-c378221ba292 customerExternalId: type: string description: >- The unique identifier for the customer in your external system. example: a03839d6-461c-479c-99db-8160174ef12d auth: type: object description: > An authentication payload that could contain different types of credentials, such as a token, used to authenticate an end user. All of the fields are optional, but at least one will be required minProperties: 1 properties: body: type: object description: >- Any authentication data to be sent in the request body, if applicable. cookies: type: object description: >- Any authentication data to be sent as cookies, if applicable. headers: type: object description: >- Any authentication data to be sent in the request headers, if applicable. token: type: string description: An authentication token for the user, if applicable. required: - customerExternalId - auth example: customerExternalId: customer-xyz token: cGFzc3dvcmQ= responses: '204': description: 204 - No Content '400': description: 400 - Bad request content: application/json: schema: description: Bad request response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 400-01 message: Bad request description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '401': description: 401 - Unauthorized content: application/json: schema: description: Unauthorized response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 401-01 message: Unauthorized description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '403': description: 403 - Forbidden content: application/json: schema: description: Forbidden response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 403-01 message: Forbidden Response description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '404': description: 404 - Not Found content: application/json: schema: description: Not Found response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 404-01 message: Not Found description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '422': description: 422 - Unprocessable Entity content: application/json: schema: description: Unprocessable Entity response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 422-01 message: Unprocessable Entity description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '429': description: 429 - Too Many Requests content: application/json: schema: description: Too Many Requests response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 429-01 message: Too Many Requests description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message '503': description: 503 - Service Unavailable content: application/json: schema: description: Service Unavailable response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 503-01 message: Service Unavailable description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message default: description: 500 - Internal Server Error content: application/json: schema: description: Default error response type: object properties: error: example: requestId: 8e033668-9f1a-11ec-b909-0242ac120002 code: 500-01 message: Internal server error description: Error details type: object properties: requestId: type: string description: Unique ID of the failing request message: type: string description: Error message code: type: string description: Error code required: - requestId - message components: securitySchemes: API-ID: type: apiKey in: header name: asapp-api-id API-Secret: type: apiKey in: header name: asapp-api-secret ```` --- # Source: https://docs.asapp.com/generativeagent/configuring/connect-apis/authentication-methods.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Authentication Methods > Learn how to configure Authentication methods for API connections. APIs require authentication to control access to their endpoints. GenerativeAgent's API connections support the following authentication methods: * Basic Authentication (username/password) * Custom Header Authentication (API keys) * OAuth 2.0 (Authorization Code and Client Credentials flows) If your APIs require an authentication flow that is not supported by the default authentication methods, we can create a [custom authentication method](#custom-authentication-methods) for you. ## Create an Authentication Method To Create an Authentication Method: You may also create an Authentication Method when specifying the API Connection's API Source. * Provide a name and description * Select the Authentication Type matching your API's requirements * Configure the type-specific settings detailed in sections below * Save the Authentication Method In the API Connection's API Source tab, select this Authentication Method for Sandbox or Production environments. ## Basic Authentication [Basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) requires: * Username * Password ## Custom Header Custom headers add authentication data to API requests via HTTP headers. Common implementations include API keys and bearer tokens. To configure a custom header, you need to: 1. Optionally enable client authentication: * Enable if you need to reference values from the client in a header. * Set the client data validity duration. * Reference client data using `{Auth.*}` 2. Header configuration: * Header Name (e.g., "Authorization", "X-API-Key") * Header Value (static value or dynamic client data) * e.g. `{Auth.client_token}` ## OAuth OAuth 2.0 provides delegated authorization flows. GenerativeAgent supports: Required configuration: * Authorization Code reference This is the location within the [client data](#client-authentication-data) that contains the authorization code. `{Auth.authorization_code}` * Client ID * Client secret * Token Request URL * Redirect URI You can use a variable from the client data for the redirect URI. `{Auth.redirect_uri}` * How the client authentication data is passed * Basic Auth, or * Request Body * One or more headers to be added to the request. * Header Name * Header Value Use `{OAuth.access_token}` for the generated access token. You can also reference the client data in the header values, using the variable: `{Auth.[auth_data_key]}`. Required configuration: * Client ID * Client secret * Token Request URL * How the client authentication data is passed * Basic Auth, or * Request Body * One or more headers to be added to the request. * Header Name * Header Value Use `{OAuth.access_token}` for the generated access token. You can also reference the client data in the header values, using the variable: `{Auth.[auth_data_key]}`. ## Client Authentication Data Some authentication flows require dynamic data from the client: * OAuth authorization codes * User-specific API keys * Custom tokens You provide client authentication data through: If you are using GenerativeAgent independently of ASAPP Messaging, this Auth data is passed via the [`/authenticate`](/apis/conversations/authenticate-a-user-in-a-conversation) endpoint. If you are using GenerativeAgent as part of ASAPP Messaging, this Auth data is passed via the [SDKs](/agent-desk/integrations) depending on the chat channel you are using. ### Client Authentication Session Any authentication method that requires client data will store the auth data for the session. If the underlying API returns a `401`, the system will require new client authentication data for the session. GenerativeAgent communicates this in the event stream as an [`authenticationRequested`](/generativeagent/integrate/handling-events#user-authentication-required) event. ## Custom Authentication Methods If your API requires an authentication flow not supported by our default methods, we can work with you to create a custom solution. Contact your ASAPP account team to discuss your custom authentication requirements. We'll work with you to build and implement the solution. ### Using Custom Authentication Methods Custom authentication methods work the same way as standard methods: * They appear in your authentication method list * You can select them when configuring API connections * They support both sandbox and production environments Custom authentication methods are read-only configurations. To modify an existing custom authentication method, please work with your ASAPP account team. --- # Source: https://docs.asapp.com/autocompose/autocompose-tooling-guide.md # AutoCompose Tooling Guide > Learn how to use the AutoCompose tooling UI ## Overview This page outlines how to manage and configure global response lists for AutoCompose in ASAPP Messaging. The global response list is created and maintained by program administrators, and the responses contained within it can be suggested to the full agent population. Suggestions given to agents can also include custom responses created by agents and organic responses, which are a personalized response list of frequently-used responses by each agent. To learn more about AutoCompose Features, go to [AutoCompose Product Guide](/autocompose/product-guide). ASAPP Messaging gives program administrators full control over the global response list. In ASAPP Messaging, click on **AutoCompose** and then on **Global Responses** in the sidebar. ## Best Practices The machine learning models powering AutoCompose look at the global response list and select the response that is most likely to be said by the agent. To create an effective global response list, take into account the following best practices: 1. We recommend having a global response list containing 1000-5000 responses. * The more global responses, the better. Having responses that cover the full range of common conversational scenarios enables the models to make better selections. * Deploying a small response list that contains only one way of saying each phrase is not recommended. The best practice is to include several ways of saying the same phrase, as that will enable our machine learning models to match each agent's conversational style. * Typically, the list is generated by collecting and curating the most frequent agent messages from historical chats at the beginning of an ASAPP deployment. 2. Responses should be kept up-to-date as there are changes to business logic and policies to avoid suggestions with stale information. ## Managing Responses The Global Responses page contains a table where each row represents a response that can be suggested to an agent. There are two ways of managing the global response list: 1. Directly add or edit responses through the AI-Console UI, which provides a simple and intuitive experience. This method is best suited for small volumes of changes. 2. Upload a .csv file containing the entire global response list, doing a bulk edit. This method is best suited for large volumes of changes. The following table describes the elements that can be included with each response: | Field | Description | Required | | :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | | Text | The text field contains the response that can be suggested to an agent. Optionally, the text can include [metadata inserts](#metadata "Metadata") to dynamically embed information into a response. | Yes | | Title | Used to provide short descriptors for responses. If a title is specified, when a response is suggested to an agent it will display its title. | No | | Metadata filters | Used to determine when a response can appear as a suggestion. Allows responses to be filtered to specific agents based on one or more conditions (e.g. filtering responses to specific queues). | No | | Folder path | Used to organize responses into folder hierarchies. Agents can access and navigate these folders to discover relevant responses. | No | ## Uploading Responses in Bulk The global response list can be updated by uploading a .csv file containing the full response list. The recommended workflow is to first download the most recent response list, make changes, and upload the list back into AI-Console. ### .csv Templates The following instructions provide detailed descriptions of how responses need to be defined when using a .csv file. **Text** The text field should contain the exact response that will be suggested to an agent. Optionally, the text field may contain metadata inserts. To use a metadata insert within a response, type the key of the metadata insert inside curly brackets: > "Hello, my name is \{rep\_name}. How may I assist you today?" To learn more about which metadata inserts are available to use within responses, see [Metadata](#metadata "Metadata"). **Folder path** Responses can be organized within a folder structure. This field can contain a single folder name, or a series of nested folders. If using nested folders, each folder should be separated by the ">" character (e.g. "PARENT FOLDER > CHILD FOLDER"). **Title** The title field enables short descriptions for responses. Titles do not need to be unique. **Metadata filters** Metadata filters can be added by specifying conditions using the metadata filter key and metadata filter value columns. Key: The metadata filter key contains the field on which to condition the response. For example, if we want to filter a response to a specific queue, the metadata key should be "queue\_name". Value: The metadata filter value specifies for which values of the metadata key the response will be valid. A single metadata filter key can have multiple values, which should be written as a comma-separated list. For example, if the response should be available to the "general" and "escalation" queues, then the metadata filter value should be "general, escalation". A response can contain multiple conditions. To define multiple conditions, separate each with a new line; use shift+enter in Windows or option+enter in Mac to enter a new line in the same cell. [Click here to download a global responses template file](https://docs-sdk.asapp.com/product_features/global-responses-template.csv). **Getting the "invalid character �" when uploading a response list?** If you are uploading a response list and seeing an error message that a response contains the invalid character �, it is likely caused by using Microsoft Excel to edit the response list, as Excel uses a non-standard encoding mechanism. To fix this issue, select **Save as...** and under **File Format**, select **CSV UTF-8 (Comma delimited) (.csv)**. ## Saving and Deploying Saving changes to the global response list or uploading a new list from a .csv file will create a new version. Past versions can be seen by selecting **Past Versions** under the vertical ellipses menu. The global response list can be easily deployed into testing or production environments. An indicator at the top of each version indicates the status of the response list: unsaved draft, saved draft, deployed in a testing environment, or deployed in production. ## Metadata The Metadata Dictionary, accessible through the navigation panel, provides an overview of metadata that is available for your organization to use in global responses. There are two types of metadata: * **Metadata inserts** are used within the text of each response as templates that can dynamically insert information. Inserts are defined using curly brackets (e.g. Hello, this is \{rep\_name}, how may I assist you today?). * **Metadata filters** introduce conditions to control in which conversations responses can be suggested. By default, responses without any metadata filters are available as suggestions for the entire agent population. Common patterns for filtering include restricting responses to specific queues or lines of business. The metadata on global responses doesn’t control visibility or access for agents in the Global Responses tab of the Right-Hand Panel. The metadata implementation, will influence when a response is suggested by the model in the AutoCompose functionality. ### Metadata Inserts A response that contains a metadata insert is a templated response. When a templated response is suggested, it will be shown to the agent with the metadata insert filled in. *Adding a templated response in AI-Console* *Templated response being suggested to the agent in AutoCompose* If the needed metadata insert (such as customer or agent name) is unavailable for a particular response (e.g. the customer in the conversation is unidentifiable), the response will not be suggested by AutoCompose. To view all metadata inserts available to use within a conversation, navigate to **Metadata Dictionary** in the navigation panel. ### Metadata Filters Responses that do not have associated metadata filters will be available to the full agent population. In the metadata dictionary, click on any metadata filter to view details about the filter and all possible values available for it. --- # Source: https://docs.asapp.com/changelog/autocompose.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # AI Compose Updates > New updates and improvements across AI Compose AI Compose Sandbox is a playground environment that allows administrators to preview and test the AI Compose experience before integration. The sandbox provides a realistic simulation of how agents will interact with AI Compose's suggestion features, including: * Complete response suggestions above the composer * In-line suggestions while typing * Custom response management through the AI Compose panel * Access to the global response library The sandbox environment helps administrators understand the agent experience and evaluate AI Compose's capabilities firsthand. ## How It Works Watch the following video walkthrough to learn how to use the AI Compose Sandbox: ``` ### iframe Styling You can customize the ASAPP Chat SDK iframe by using the ID `#asapp-chat-sdk-iframe` or classname `.asappChatSDKIFrame` selectors. The following snippet is an example of how you may want to use these selectors to customize the element to your brand. ```css theme={null} @media only screen and (min-width: 415px) { #asapp-chat-sdk-iframe { box-shadow: 0 2px 12px 0 rgba(35, 6, 60, 0.05), 0 2px 49px 0 rgba(102, 51, 153, 0.25); } } ``` Modifying the sizing or positioning of the iframe is currently not supported. Change those properties at your own risk; a moved or resized iframe is not guaranteed to work with upcoming releases of the ASAPP platform ## Customize the Chat UI ASAPP will customize the Chat SDK iframe User Interface (UI) in close collaboration with design and business stakeholders. ASAPP will work within your branding guidelines to apply an appropriate color palette, logo, and typeface. There are two particularly technical requirements that we can assess early on to provide a more seamless delivery of requirements: ### 1. Chat Header Logo The ASAPP SDK Team will embed your logo into the Chat SDK Header. Please provide your logo in the following format: * SVG format * Does not exceed 22 pixels in height * Does not exceed 170 pixels in width * Should not contain animations * Should not contain filter effects If you follow the above guidelines your logo will: * display at the most optimal size for responsive devices * sit well within the overall design * display properly ### 2. Custom Typefaces Using a custom typeface within the ASAPP Chat SDK requires detailed technical requirements to ensure that the client is performant, caching properly, and displaying the expected fonts. For the best experience, you should provide ASAPP with the following: * The font should be available in any of the following formats: WOFF2, WOFF, OTF, TTF, and EOT. * The font should be hosted in the same place that your own site's custom typeface is hosted. * The same hosted font files should have an `Access-Control-Allow-Origin` that allows `sdk.asapp.com` or `*`. * The files should have proper cache-control headers as well as GZIP compression. For more information on web font performance enhancements, ASAPP recommends the article: [Web Font Optimization](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/webfont-optimization), published by Google and Ilya Grigorik. * You acknowledge that you will provide ASAPP with the URLs for each of the hosted font formats for use in a CSS @font-face declaration, hosted on sdk.asapp.com. * If your font becomes unavailable for display, ASAPP will default to using [Lato](https://fonts.google.com/specimen/Lato), then Arial, Helvetica, or a default sans-serif font. ## Dynamic Styling Configuration The ASAPP Chat SDK supports dynamic styling through configuration. This allows you to customize the appearance of various chat components without requiring CSS modifications. ### Incorporating Styling in the SDK To dynamically apply styles based on the provided configuration, the SDK implements the following approach: * **Extract Styling Configurations**: The SDK parses the `Chat.Styling` section of the configuration and identifies the defined styles for various elements. * **Apply Styles Dynamically**: The SDK targets elements based on their class names and applies inline styles dynamically, ensuring that the defined styles are reflected in real-time. * **Handle State-Based Styling**: Elements that support different states (e.g., button with default and focus styles) have event listeners added dynamically to switch styles when users interact with them. ### Configuration Schema The enhanced configuration schema includes a `Chat` section that supports styling, icons, and features: ```json theme={null} { "Chat": { "Styling": { /* ChatStyling object */ }, "Icons": { /* ChatIcons object */ }, "Features": { /* ChatFeatures object */ } } } ``` ### Styling Configuration The `Chat.Styling` object allows you to customize the appearance of various chat elements: #### Available Styling Options **QuickReplies**: Customize quick reply buttons and their container * `Container`: Scrollable container holding all quick reply buttons * `Button`: Individual quick reply action buttons ```json theme={null} { "Chat": { "Styling": { "QuickReplies": { "Container": { "backgroundColor": "#f8f9fa", "padding": "12px", "borderRadius": "8px" }, "Button": { "backgroundColor": "#5255e2", "color": "#ffffff", "border": "none", "borderRadius": "20px", "padding": "8px 16px", "fontSize": "14px", "fontWeight": "500" } } } } } ``` **ChatInput**: Style chat input components * `AttachmentButton.Icon`: Icon within the attachment button * `SendButton.Icon.Disabled`: Send button icon in disabled state * `SendButton.Icon.Enabled`: Send button icon in enabled state ```json theme={null} { "Chat": { "Styling": { "ChatInput": { "AttachmentButton": { "Icon": { "fill": "#5255e2", "width": "20px", "height": "20px" } }, "SendButton": { "Icon": { "Disabled": { "fill": "#cccccc", "opacity": "0.5" }, "Enabled": { "fill": "#5255e2", "opacity": "1" } } } } } } } ``` **EwtSheet**: Estimated Wait Time display styling * `ProgressBar.Container`: Background container for progress bar * `ProgressBar.Line`: Active progress indicator line * `Content`: Main content area styling * `SecondaryText`: Secondary description text * `PrimaryText`: Primary time display text * `TextContainer`: Wrapper for text elements * `Button`: Action buttons in EWT sheet ```json theme={null} { "Chat": { "Styling": { "EwtSheet": { "ProgressBar": { "Container": { "backgroundColor": "#e9ecef", "borderRadius": "4px", "height": "8px" }, "Line": { "backgroundColor": "#5255e2", "borderRadius": "4px", "transition": "width 0.3s ease" } }, "Content": { "padding": "20px", "backgroundColor": "#ffffff", "borderRadius": "12px" }, "PrimaryText": { "fontSize": "18px", "fontWeight": "600", "color": "#212529" }, "SecondaryText": { "fontSize": "14px", "color": "#6c757d", "marginTop": "8px" }, "TextContainer": { "textAlign": "center", "marginBottom": "16px" }, "Button": { "backgroundColor": "#5255e2", "color": "#ffffff", "border": "none", "borderRadius": "6px", "padding": "10px 20px", "fontSize": "14px", "fontWeight": "500" } } } } } ``` **ActionSheet**: Full screen modal action buttons * `Buttons.Container`: Wrapper for all action buttons * `Buttons.Primary`: Primary action button styling * `Buttons.Secondary`: Secondary action button styling ```json theme={null} { "Chat": { "Styling": { "ActionSheet": { "Buttons": { "Container": { "display": "flex", "flexDirection": "column", "gap": "12px", "padding": "20px" }, "Primary": { "backgroundColor": "#5255e2", "color": "#ffffff", "border": "none", "borderRadius": "8px", "padding": "12px 24px", "fontSize": "16px", "fontWeight": "600" }, "Secondary": { "backgroundColor": "transparent", "color": "#5255e2", "border": "2px solid #5255e2", "borderRadius": "8px", "padding": "12px 24px", "fontSize": "16px", "fontWeight": "500" } } } } } } ``` **NewQuestion**: New question prompt styling * `Container`: Container for new question UI * `Content.Text`: Text elements in prompt * `Content.Icon`: Icon in new question UI ```json theme={null} { "Chat": { "Styling": { "NewQuestion": { "Container": { "backgroundColor": "#f8f9fa", "borderRadius": "12px", "padding": "16px", "border": "1px solid #dee2e6" }, "Content": { "Text": { "fontSize": "14px", "color": "#495057", "fontWeight": "500" }, "Icon": { "fill": "#5255e2", "width": "18px", "height": "18px" } } } } } } ``` **ChatBanner**: Chat banner notifications * `Container`: Banner container * `Text`: Main banner text * `Warning`: Warning variant styling * `Error`: Error variant styling * `Success`: Success variant styling * `Icon`: Icon variant styling ```json theme={null} { "Chat": { "Styling": { "ChatBanner": { "Container": { "padding": "12px 16px", "borderRadius": "8px", "marginBottom": "12px", "display": "flex", "alignItems": "center", "gap": "8px" }, "Text": { "fontSize": "14px", "fontWeight": "500", "lineHeight": "1.4" }, "Warning": { "backgroundColor": "#fff3cd", "borderColor": "#ffeaa7", "color": "#856404" }, "Error": { "backgroundColor": "#f8d7da", "borderColor": "#f5c6cb", "color": "#721c24" }, "Success": { "backgroundColor": "#d1edff", "borderColor": "#bee5eb", "color": "#0c5460" }, "Icon": { "width": "16px", "height": "16px", "flexShrink": "0" } } } } } ``` **ChatMessagesView**: Chat messages display * `ScrollView`: Chat view for chat messages ```json theme={null} { "Chat": { "Styling": { "ChatMessagesView": { "ScrollView": { "backgroundColor": "#ffffff", "padding": "16px", "overflowY": "auto", "maxHeight": "400px" } } } } } ``` #### Styling Example Here is a comprehensive example that combines multiple styling options: ```json theme={null} { "APIHostname": "sample.api.com", "AppId": "sampleAppId", "Language": "", "RegionCode": "", "CustomerId": "", "Display": { "Align": "right", "AlwaysShowMinimize": true, "BadgeColor": "#5255e2", "BadgeText": "", "BadgeType": "badge", "FrameDraggable": false, "FrameStyle": "default", "FrameTitle": null, "HideBadgeOnLoad": false, "Identity": "", "PrimaryColor": "#5255e2", "DarkColor": "#494a7c" }, "Chat": { "Styling": { "QuickReplies": { "Container": { "backgroundColor": "#f8f9fa", "padding": "12px" }, "Button": { "backgroundColor": "#5255e2", "color": "#ffffff", "borderRadius": "20px" } }, "ChatInput": { "SendButton": { "Icon": { "Enabled": { "fill": "#5255e2" }, "Disabled": { "fill": "#cccccc" } } } }, "ChatBanner": { "Container": { "borderRadius": "8px", "padding": "12px" }, "Success": { "backgroundColor": "#d1edff", "color": "#0c5460" } } } }, "Intent": null, "Sound": true } ``` ## Custom Icons The `Chat.Icons` section allows you to specify custom SVG path data for key icons used within the chat interface. ### Icon Configuration The SDK supports using SVG `d` path data to create customizable icons. You only need to provide the `d` attribute value from your SVG: ```json theme={null} { "Chat": { "Icons": { "Minimize": "M 44 24 C 44 24.847656 43.308594 25.539062 42.460938 25.539062 L 5.539062 25.539062 C 4.691406 25.539062 4 24.847656 4 24 C 4 23.152344 4.691406 22.460938 5.539062 22.460938 L 42.460938 22.460938 C 43.308594 22.460938 44 23.152344 44 24 Z M 44 24", "Send": "M 2.289062 9.734375 C 1.773438 8.703125 1.957031 7.460938 2.746094 6.621094 C 3.539062 5.78125 4.765625 5.53125 5.832031 5.976562 L 44.332031 22.4375 C 45.347656 22.867188 46 23.859375 46 24.957031 C 46 26.054688 45.347656 27.050781 44.332031 27.476562 L 5.832031 43.9375 C 4.773438 44.390625 3.539062 44.136719 2.746094 43.296875 C 1.957031 42.453125 1.773438 41.210938 2.289062 40.183594 L 9.921875 24.964844 Z M 12.3125 26.339844 L 4.75 41.425781 L 40.042969 26.339844 Z M 40.042969 23.59375 L 4.75 8.507812 L 12.3125 23.59375 Z M 40.042969 23.59375", "NewQuestion": "M 16.5 33.601562 C 17.882812 33.601562 19 34.671875 19 36 L 19 39.601562 L 26.664062 34.082031 C 27.09375 33.765625 27.625 33.601562 28.164062 33.601562 L 39 33.601562 C 40.382812 33.601562 41.5 32.527344 41.5 31.199219 L 41.5 9.601562 C 41.5 8.273438 40.382812 7.199219 39 7.199219 L 9 7.199219 C 7.617188 7.199219 6.5 8.273438 6.5 9.601562 L 6.5 31.199219 C 6.5 32.527344 7.617188 33.601562 9 33.601562 Z M 4 9.601562 C 4 6.953125 6.242188 4.800781 9 4.800781 L 39 4.800781 C 41.757812 4.800781 44 6.953125 44 9.601562 L 44 31.199219 C 44 33.847656 41.757812 36 39 36 L 28.164062 36 L 18.5 42.960938 C 18.125 43.230469 17.613281 43.273438 17.1875 43.070312 C 16.757812 42.867188 16.5 42.457031 16.5 42 L 16.5 36 L 9 36 C 6.242188 36 4 33.847656 4 31.199219 Z M 4 9.601562", "ChatBanner": "your-custom-banner-icon-d-path-here" } } } ``` ### Available Icons * **Minimize**: Icon for minimizing the chat window * **Send**: Icon for the send button * **NewQuestion**: Icon for starting a new question * **ChatBanner**: Icon for chat banner notifications Make sure to size your icons correctly. You may use an online SVG editor to resize your icons to meet the chat interface specifications. ## Advanced Configuration Options ### Chat Features The `Chat.Features` section controls the availability of specific chat features: #### Estimated Wait Time (EWT) Control whether the EWT feature is displayed: ```json theme={null} { "Chat": { "Features": { "EWT": { "enabled": true } } } } ``` #### Focus Trap Enable focus trap within the chat instance for better accessibility: ```json theme={null} { "Chat": { "Features": { "TrapFocus": true } } } ``` --- # Source: https://docs.asapp.com/agent-desk/integrations/web-sdk/web-examples.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Web Examples This section provides a few common integration scenarios with the ASAPP Chat SDK. Before continuing, make sure you've [integrated the ASAPP SDK](/agent-desk/integrations/web-sdk/web-quick-start "Web Quick Start") script on your page. You must have the initial script available before utilizing any of the examples below. Also, be sure that you have a [Trigger](/agent-desk/integrations/web-sdk/web-features#triggers "Triggers") enabled for the page(s) you wish to display the Chat SDK. * [Basic Integration (no Authentication)](#basic-integration-no-authentication "Basic Integration (no Authentication)") * [Basic Integration (With Authentication)](#basic-integration-with-authentication "Basic Integration (With Authentication)") * [Customizing the Interface](#customizing-the-interface "Customizing the Interface") * [Advanced Integration](#advanced-integration "Advanced Integration") ## Basic Integration (no Authentication) The most basic integrations are ones with no customizations to the ASAPP interface and no integrated use cases. If your company is simply providing an un-authed user experience, an integration like the one below may suffice. ee the [App Settings](/agent-desk/integrations/web-sdk/web-app-settings "Web App Settings") page for details on the [APIHostname](/agent-desk/integrations/web-sdk/web-app-settings#apihostname "APIHostName") and [AppId](/agent-desk/integrations/web-sdk/web-app-settings#appid "AppId") settings. The following code snippet is an example of a non-authenticated integration with the ASAPP Chat SDK. ```json theme={null} document.addEventListener('DOMContentLoaded', function () { ASAPP('load', { APIHostname: 'example-co.api.asapp.com', AppId: 'example-co' }); }); ``` With the above information set, a user will be able to access integrated use cases. If their session or token information has expired, then the user will be presented with a "Sign In" button. Once the user clicks the Sign In button, the Chat SDK will call your provided UserLoginHandler, allowing them to authorize. Here's a sample of what the Sign In button looks like. ## Basic Integration (With Authentication) Integrating the Chat SDK with authenticated users requires the addition of the `CustomerId`, `ContextProvider`, and `UserLoginHandler` keys. See the [App Settings](/agent-desk/integrations/web-sdk/web-app-settings "Web App Settings") page for more detailed information on their usage. With each of these keys set, a user will be able to access integrated use cases or be capable of logging in if they are not already. The following code snippet is an example of providing user credentials for allowing a user to enter integrated use cases. ```json theme={null} document.addEventListener('DOMContentLoaded', function () { ASAPP('load', { APIHostname: 'example-co.api.asapp.com', AppId: 'example-co', CustomerId: 'hashed-customer-identifier', ContextProvider: function (callback, tokenIsExpired) { var context = { Auth: { Token: 'secure-session-user-token' } }; callback(context); }, // If a user's token expires or their user credentials // are not available, handle their login path UserLoginHandler: function () { window.location.href = '/login'; } }); }); ``` With the above information set, a user will be able to access integrated use cases. If their session or token information has expired, then the user will be presented with a "Sign In" button. Once the user clicks the Sign In button, the Chat SDK will call your provided `UserLoginHandler`, allowing them to authorize. Here's a sample of what the Sign In button looks like. ## Customizing the Interface The Chat SDK offers a few basic keys for customizing the interface to your liking. The `Display` key enables you to perform those customizations as needed. Please see the [Display Settings](/agent-desk/integrations/web-sdk/web-app-settings#display "Display") section for detailed information on each of the available keys. The following code snippet shows how to add the Display key to your integration to customize the display settings of the Chat SDK. ```json theme={null} document.addEventListener('DOMContentLoaded', function () { ASAPP('load', { APIHostname: 'example-co.api.asapp.com', AppId: 'example-co', Display: { Align: 'left', AlwaysShowMinimize: true, BadgeColor: '#36393A', BadgeText: 'Chat With Us', BadgeType: 'tray', FrameDraggable: true, FrameStyle: 'sideBar' } }); }); ``` For cases in which you have more specific styling needs, you may utilize the available IDs or classnames for targeting and customizing the Chat SDK elements with CSS. These selectors are stable and can be used to target the ASAPP Badge and iFrame for specific styling needs. The following code snippet provides a CSS example showcasing a few advanced style changes. ```json theme={null} #asapp-chat-sdk-badge, #asapp-chat-sdk-badge, #asapp-chat-sdk-badge { border-radius: 25px; bottom: 10px; box-shadow: 0 0 0 2px #fff, 0 0 0 4px #36393A; } #asapp-chat-sdk-iframe { border-radius: 0; } ``` With the above customizations in place, the Chat SDK Badge will look like the following. ## Advanced Integration Here's a more robust example showing how to utilize most of the ASAPP Chat SDK settings. In the examples below we will define a few helper methods, then pass those helpers to the [Load](/agent-desk/integrations/web-sdk/web-javascript-api#load "'load'") or [SetCustomer](/agent-desk/integrations/web-sdk/web-javascript-api#setcustomer "'setCustomer'") APIs. The following example showcases a [ContextProvider](/agent-desk/integrations/web-sdk/web-contextprovider "Web ContextProvider") that sets some basic session information, then sets any available user authentication information. Once that information is retrieved, it passes the prepared context to the `callback` so that ASAPP can process each Chat SDK request. The following code snippet is a ContextProvider example utilizing session expiration conditionals. ```javascript theme={null} function asappContextProvider (callback, tokenIsExpired, sessionInfo) { var context = { CustomerInfo: { Region: 'north-america', ViewingProduct: 'New Smartphone', } }; if (tokenIsExpired || !sessionInfo) { sessionInfo = retrieveSessionInfo(); }; if (sessionInfo) { context.Auth = { Cookies: { 'X-User-Header': sessionInfo.cookies.userValue }, Token: sessionInfo.access_token }; } callback(context); } ``` The next example shows conditional logic for logging a user in on single or multi-page application. You'll likely only need to handle one of the cases in your application. If a user enters a use case they are not authorized for, they will be presented with a "Sign In" button within the SDK. When the user clicks that link, it will trigger your provided [UserLoginHandler](/agent-desk/integrations/web-sdk/web-app-settings#userloginhandler "UserLoginHandler") so you can allow the user to authenticate. The following code snippet shows a UserLoginHandler utilizing page redirection or modals to log a user in. ```javascript theme={null} function asappUserLoginHandler () { if (isSinglePageApp) { displayUserLoginModal() .then(function (customer, sessionInfo) { ASAPP('SetCustomer', { CustomerId: customer, ContextProvider: function (callback, tokenIsExpired) { asappContextProvider(callback, tokenIsExpired, sessionInfo) } }); }) } else { window.location.href = '/login'; } } ``` The next helper defines the [onLoadComplete](/agent-desk/integrations/web-sdk/web-app-settings#onloadcomplete "onLoadComplete") handler. It is used for preparing any additional logic you wish to tie to ASAPP or your own page functionality. The below example checks whether the Chat SDK loaded via a [Trigger](/agent-desk/integrations/web-sdk/web-features#triggers "Triggers") (via the `isDisplayingChat` argument). If it's configured to display, it prepares some event bindings through the [Action API](/agent-desk/integrations/web-sdk/web-javascript-api#action-on-or-off "action: 'on' or 'off'") which in turn call an example metrics service. The following code snippet shows an `onLoadComplete` handler being used with the isDisplayingChat conditional and Action API. ```javascript theme={null} function asappOnLoadComplete (isDisplayingChat) { if (isDisplayingChat) { // Chat SDK has loaded and exists on the page document.body.classList.add('chat-sdk-loaded'); var customerId = retrieveCurrentSessionOrUserId(); ASAPP('on', 'issue:new', function (event) { metricService('set', 'chat:action', { actionName: event.type, customerId: customerId, externalCustomerId: event.detail.customerId, issueId: event.detail.issueId }) }); ASAPP('on', 'message:received', function (event) { metricService('set', 'chat:action', { actionName: event.type, customerId: customerId, externalCustomerId: event.detail.customerId, isLiveChat: event.detail.isLiveChat, issueId: event.detail.issueId, senderType: event.detail.senderType }) }); } else { // Chat SDK is not configured to display on this page. // See Display Settings: Triggers documentation } } ``` Finally, we tie everything together. The example below shows a combination of adding the above helper functions to the ASAPP [Load API](/agent-desk/integrations/web-sdk/web-javascript-api#load "'load'"). It also combines many of the [App Settings](/agent-desk/integrations/web-sdk/web-app-settings "Web App Settings") available to you and your integration. ```javascript theme={null} document.addEventListener('DOMContentLoaded', function () { var customerId = retrieveCustomerIdentifier(); ASAPP('load', { APIHostname: 'example-co.api.asapp.com', AppId: 'example-co', Display: { Align: 'left', AlwaysShowMinimize: true, BadgeColor: 'rebeccapurple', BadgeText: 'Chat With Us', BadgeType: 'tray', FrameDraggable: true, FrameStyle: 'sideBar', Identity: 'subsidiary-branding' }, Intent: { Code: 'PAYBILL' }, RegionCode: 'US', Sound: true, CustomerId: customerId, ContextProvider: asappContextProvider, UserLoginHandler: asappUserLoginHandler, onLoadComplete: asappOnLoadComplete }); }); ``` --- # Source: https://docs.asapp.com/agent-desk/integrations/web-sdk/web-features.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Web Features This section describes various features that are unique to the ASAPP Web SDK: * [Triggers](#triggers "Triggers") * [Deeplinks](#deeplinks-11865 "Deeplinks") In addition, please see [Chat Instead](/agent-desk/integrations/chat-instead/web "Web"). ## Triggers A Trigger is an ASAPP feature that allows you to specify which pages display the ASAPP Chat UI. You may choose to show the ASAPP Chat UI on all pages where the ASAPP Chat SDK is [embedded and loaded](/agent-desk/integrations/web-sdk/web-quick-start "Web Quick Start"), or on just a subset of those pages. You must enable at least one Trigger in order for the ASAPP Chat UI to display anywhere on your site. Until you define at least one Trigger, the ASAPP Chat UI will not display on your site. Once you've [embedded](/agent-desk/integrations/web-sdk/web-quick-start#1-embed-the-script "1. Embed the Script") and [loaded](/agent-desk/integrations/web-sdk/web-javascript-api#load "'load'") the Chat SDK on your web pages, ASAPP will determine whether or not to display the Chat UI on the user's current URL. URLs that are enabled for displaying the UI are configured by a feature known as Triggers. You will need to be set up as a user of the ASAPP Admin Control Panel in order to make the changes described below. Once you are granted permissions, you may utilize the Triggers as a means of specifying which pages are eligible to show the ASAPP Chat UI. ### Creating a Trigger 1. Visit the **Admin > Triggers** section of your Admin Desk. 2. Click the **Add +** button from the Triggers settings page. 3. In the **URL Link** field, enter the URL for the page where you would like to display the ASAPP Chat UI. (See the **Types of Triggers** section below for some example values.) 4. Click **Next >**. 5. Give the Trigger a display name. (Display names are used only on the Triggers settings page to help you organize and manage your triggers.) 6. Click **Save**. 7. You should now see the new entry on your Trigger settings page. 8. Visit the newly configured page on your site to double-check that the ASAPP Chat UI is loading or hiding as you expect. ### Types of Triggers You may finely control the display of the ASAPP Chat UI on your site by adding as many Triggers as you like. Triggers can be defined in two different ways: as **Wildcard** and as **Single-Page Triggers**. #### Wildcard Triggers You can use the wildcard character in the URL Link field of a Trigger to enable the display of the Chat SDK pages that follow a URL pattern. The asterisk (i.e., `/*` is the wildcard character you use when defining a Trigger. When you use an asterisk in the URL Link of your Trigger definition, that character will match any sequence of one or more characters. To set a wildcard for your entire domain, enter a **URL Link** value for your domain name, followed by `/*` (e.g., `example.com/*` ). This will enable the display of the ASAPP Chat UI on all pages of your site. To enable the ASAPP Chat UI to appear on a more limited set of pages, enter a **URL Link** value that includes the appropriate sub-route path, followed by the `/*` wildcard (e.g., `example.com/settings/*`). This will cause the Chat UI to display on any pages that start with the URL and sub-route `example.com/settings/`, such as `example.com/settings/profile` and `example.com/settings/payment`. #### Single-Page Triggers If you want the ASAPP Chat UI to display on only a few specific pages, you can create a separate Trigger for each of those pages, one at a time, by entering the exact URL for the page you wish to enable in the URL Link field of the Trigger definition. For example, entering `example.com/customer-support/shipping.html` in the URL Link field of your Trigger definition will enable the ASAPP Chat UI to display on that single page. ## Deeplinks A feature that defines how the SDK opens hyperlinks when a user clicks a link to another document. In the ASAPP Web SDK, we use the browser's `window.location.origin` API to determine whether the link should open in the same window or a new window. In order for a link to open in the same window as the user's current SDK window, the `window.location.origin` must return a matching protocol and hostname. For example, if a user is on `https://www.example.com` and clicks a link to `https://www.example.com/page-two`, the SDK changes the current page to the destination page in the same window. A link opens in a *new* window if there is any difference between the current page and the destination page origin. When a user clicks a link from `https://www.example.com` to `https://subdomain.example.com` , the SDK opens the destination page in a new window due to hostname variation. A link from `https://example.com` to `http://example.com` also opens a new window due to a mismatched protocol. When a link opens a new window, the user's SDK window remains open. --- # Source: https://docs.asapp.com/agent-desk/integrations/web-sdk/web-javascript-api.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Web JavaScript API This section details the various API methods you can call to the ASAPP Chat SDK. Before making any API calls, make sure you've [integrated the ASAPP SDK](/agent-desk/integrations/web-sdk/web-quick-start "Web Quick Start") script on your page. Once you've integrated the SDK with your site, you can use the JavaScript API to toggle settings in the Chat SDK, trigger events, or send information to ASAPP. The Chat SDK Web JavaScript API allows you to perform a variety of actions after the SDK has been initialized, such as the [`load`](#setCustomer) method if you are authorization a user after a conversation has started, or updating the customers info mid conversation with the [`setCustomer`](#setcustomer) method. Read on for details on each of these methods: * [action: `on` or `off`](#action-on-or-off) * [`getState`](#getstate) * [`hide`](#hide) * [`load`](#load) * [`refresh`](#refresh) * [`send`](#send) * [`set`](#set) * [`setCustomer`](#setcustomer) * [`setIntent`](#setintent) * [`show`](#show) * [`showChatInstead`](#showchatinstead) * [`unload`](#unload) * [`unloadAndClearSession`](#unloadandclearsession) ## action: `on` or `off` This API subscribes or unsubscribes to events that occur within the Chat SDK. A developer can apply custom behavior, track metrics, and more by subscribing to one of the Chat SDK custom events. To utilize the Action API, pass either the `on` (subscribes) or `off` (unsubscribes) keywords to the `ASAPP` method. The next argument is the name of the event binding. The final argument is the callback handler you wish to attach. The following code snippet is an example of the Action API subscribing and unsubscribing to the `agent:assigned` and `message:received` events: ```javascript theme={null} function agentAssignedHandler (event) { onAgentAssigned(event.detail.issueId, event.detail.externalSenderId); } function messageHandler (event) { const { isFirstMessage, externalSenderId } = event.detail; if (isFirstMessage && externalSenderId) { OnAgentInteractive(event.detail.issueId, event.detail.customerId); } else if (isFirstMessage === false && isFromRep) { ASAPP('off', 'message:received', messageHandler); } } ASAPP('load', { onLoadComplete: () => { ASAPP('on', 'agent:assigned', agentAssignedHandler); ASAPP('on', 'message:received', messageHandler); } }); ``` ### Event Object Each event receives a `CustomEvent` object as the first argument to your event handler. This is a [standard event object](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent) with all typical interfaces. The object has an `event.type` with the name of the event and an `event.detail` key which contains the following custom properties: `issueId` (Number) The ASAPP identifier for an individual issue. This ID may change as a user completes and starts new queries to the ASAPP system. `customerId` (Number) The ASAPP identifier for a customer. This ID is consistent for authenticated users but may be different for anonymous ones. Anonymous users will have a consistent ID for the duration of their session. `externalSenderId` (String) The external identifier you provide to ASAPP that represents an agent identifier. This property will be undefined if the user is not connected with an agent. ### Chat Events Chat events trigger when a user opens or closes the Chat SDK window. These events do not have any additional event details. `chat:show` * Cancellable: true This event triggers when a user opens the Chat SDK. It may fire multiple times per session if a user repeatedly closes and opens the chat. `chat:hide` * Cancellable: true This event triggers when a user closes the Chat SDK. It may fire multiple times per session if a user repeatedly opens and closes the chat. ### Issue Events Issue events occur when a change in state of an Issue occurs within the ASAPP system. These events do not have any additional event details. `issue:new` * Cancellable: false This event triggers when a user has opened a new issue. It fires when they first open the Chat SDK or if they complete an issue and start another one. `issue:end` * Cancellable: false This event triggers when a user or agent has ended an issue. It fires when the user has completed an automated support request or when a user/agent ends an active chat. ### Agent Events Agent events occur when particular actions occur with an agent within ASAPP's system. These events do not have any additional event details. `agent:assigned` * Cancellable: false This event triggers when a user is connected to an agent for the first time. It fires once the user has left an automated support flow and has been connected to a live support agent. ### Message Events Message events occur when the user receives a message from either SRS or an agent. These events have the following additional event details: `senderType` (String) Returns either `srs` or `agent`. `isLiveChat` (Boolean) Returns `true` when a user is connected with an agent. Returns `false` when a user is within an automated flow. `isFirstMessage` (Boolean) Returns `true` only when a message is the first message received from an agent or SRS. Otherwise returns `false`. `message:received` * Cancellable: false This event triggers whenever the Chat SDK receives a message event to the chat log. It will fire when a user receives a message from SRS or an agent. ## getState This API returns the current state of Chat SDK session. It accepts a callback which receives the current state object. ```javascript theme={null} ASAPP('getState', function(state) { console.log(state); }); ``` ### State Object The state object contains the following keys which give you insight into the user's actions: `hasContext` (Object) Returns the current [context](/agent-desk/integrations/web-sdk/web-contextprovider "Web ContextProvider") known by the SDK. `hasCustomerId` (Boolean) Returns true when the SDK has been provided with a [CustomerId](/agent-desk/integrations/web-sdk/web-app-settings#customerid "CustomerId") setting. `isFullscreen` (Boolean) Returns true when the SDK will render in fullscreen for mobile web devices. `isLiveChat` (Boolean) Returns true when the use is connected to an agent. `isLoggingIn` (Boolean) Returns true if the user has been presented with and clicked on a button to Log In. `isMobile`(Boolean) Returns true when the SDK is rendering on a mobile or tablet device. `isOpen` (Boolean) Returns true if the user has the SDK open on the current or had it open on the previous page. `unreadMessages` (Integer) Returns a count of how many messages the user has received since minimizing the SDK. ## hide This API hides the Chat SDK iframe. See [Show](#-show- "'show'") for revealing the Chat SDK iframe. This method is useful for when you want to close the SDK iframe after certain page interactions or if you've provided a custom Badge entry point. ```javascript theme={null} ASAPP('hide'); ``` ## load This API initializes the ASAPP Chat SDK for display on your pages and typically specify a [`contextProviderHandler`](/agent-desk/integrations/web-sdk/web-contextprovider). To call the `load` the API and initialize the SDK, specify any of the [Web App Settings](/agent-desk/integrations/web-sdk/web-app-settings), though the following are required: * [APIHostname](/agent-desk/integrations/web-sdk/web-app-settings#apihostname): The Hostname for connection customers with customer support. * [AppId](/agent-desk/integrations/web-sdk/web-app-settings#appid "AppId"): Your unique Company Identifier (or company marker). Work with your ASAPP Account Team to determine the correct values for these settings. Typically, you'll also specify a [`ContextProvider` handler](/agent-desk/integrations/web-sdk/web-contextprovider) to provide context to the SDK such as user authentication information or other customer information. ```javascript Load with CustomerInfo And Authentication Token theme={null} ASAPP('load', { APIHostname: '[API_HOSTNAME]', AppId: '[APP_ID]', ContextProvider: (callback) => { const context = { CustomerInfo: { category: 'payment', parent_page: 'Pay my Bill' }, Auth: { Token: '[AUTH_TOKEN]' } }; callback(context); } }); ``` Please see the [Web App Settings](/agent-desk/integrations/web-sdk/web-app-settings) page for a list of all the available properties that can be passed to the `Load` API. ## refresh This API checks to make sure that [Triggers](/agent-desk/integrations/web-sdk/web-features#triggers) work properly when a page URL changes in a SPA (Single-Page Application). You should call this API every time the page URL changes if your website is a SPA. ```javascript theme={null} ASAPP('refresh') ``` ## send Use this API to update the `customerInfo` object at any time, regardless of whether the user is currently typing in the Chat SDK. Typically, the `customerInfo` is updated as part of your [`contextProviderHandler`](/agent-desk/integrations/web-sdk/web-app-settings#contextprovider) function defined in your [`load`](#'load') call, which is called whenever the user types in the Chat SDK. This API is primarily used to send information that is used to show a proactive chat prompt when a specific criteria or set of criteria are met. The `send` API is rate limited to one request for every 5 seconds. To use this API: * Specify a `type` of `customer` Only the `customer` event type is supported. * Provide a `data` object containing the `customerInfo` object: ```javascript theme={null} ASAPP('send', { type: 'customer', data: { "key1": "value1", "key2": "value2" } }); ``` For example, you could use a key within `CustomerInfo` to indicate that a customer had abandoned their shopping cart. Do not use the send API for transmitting any information that you would consider sensitive or Personally Identifiable Information (PII). The accepted keys are listed below. ## set This API applies various user information to the Chat SDK. Calling this API does not make a network request. The API accepts two arguments. The first is the name of the key you want to update. The second is the value that you wish to assign the key. ```javascript theme={null} ASAPP('set', 'Auth', { Token: '3858f62230ac3c915f300c664312c63f' }); ASAPP('set', 'ExternalSessionId', 'j6oAOxCWZh...'); ``` Please see the [Context Provider](/agent-desk/integrations/web-sdk/web-contextprovider "Web ContextProvider") page for a list of all the properties you can provide to this API. ## setCustomer This API provides an access token with your customers account after the Chat SDK has already loaded. This method is useful if a customer logs into their account or if you need to refresh your customers auth token from time to time. See the [SDK Settings](/agent-desk/integrations/web-sdk/web-app-settings "Web App Settings") section for details on the [CustomerId](/agent-desk/integrations/web-sdk/web-app-settings#customerid "CustomerId") (Required), [ContextProvider](/agent-desk/integrations/web-sdk/web-app-settings#contextprovider "ContextProvider") (Required), and [UserLoginHandler](/agent-desk/integrations/web-sdk/web-app-settings#userloginhandler "UserLoginHandler") properties accepted for SetCustomers second argument. ```javascript theme={null} ASAPP('setCustomer', { CustomerId: 'a1b2c3x8y9z0', ContextProvider: function (callback) { var context = { Auth: { Token: '3858f62230ac3c915f300c664312c63f' } }; callback(context); } }); ``` ## setIntent This API lets you set an intent after Chat SDK has already been loaded and will take effect even if the user is in chat. ASAPP recommends that you use [Intent](/agent-desk/integrations/web-sdk/web-app-settings#intent "Intent") via App Settings during load. This method takes an object as a parameter, with a required key of `Code`. `Code` accepts a string. Your team and your ASAPP Implementation Manager will determine the available values. ```javascript theme={null} ASAPP('setIntent', {Code: 'PAYBILL'}); ``` ## show This API shows the Chat SDK iframe. See [Hide](#-hide- "'hide'") for hiding the Chat SDK iframe. This method is useful for when you want to open the SDK iframe after certain page interactions or if you've provided a custom Badge entry point. ```javascript theme={null} ASAPP('show'); ``` ## showChatInstead This API displays the [Chat Instead](../chat-instead/web "Web") feature. This API displays the Chat Instead feature. In order to enable this feature, please integrate with the `showChatInstead` API and then contact your Implementation Manager. **Options:**

Key

Description

Required

phoneNumber

Phone number used when a user clicks phone in Chat Instead.

Yes

APIHostName

Sets the ASAPP APIHostName for connecting customers with customer support.

No

(Required if you have not initialized the WebSDK via the Load API on the page)

AppId

Your unique Company Identifier.

**Example Use Case:** ```html theme={null} (800) 123-4567 ``` ## unload This API removes all the SDK related elements from the DOM (Badge, iframe, and Proactive Messages if any). If the SDK is already open or a user is in live chat, ASAPP will ignore this call. To reload the SDK, you need to call the "Load" API. ```javascript theme={null} ASAPP('unload') ``` ## unloadAndClearSession This API removes all SDK instances from the browser and clears the session details. This method is specifically designed to be called during user logout to ensure complete session cleanup and allow users to reinstantiate the chat with a completely new session. This API will: * Remove chat instances from the browser * Clear all session details and stored data * Allow reinstantiation of chat with a fresh session * Ensure proper session cleanup for user privacy Unlike the `unload` API, this method performs a complete cleanup of all session-related data, making it ideal for logout scenarios where you want to ensure no user data persists. ```javascript theme={null} ASAPP('unloadAndClearSession') ``` **Usage Example:** ```javascript theme={null} // Call this method when user logs out function handleUserLogout() { // Perform other logout operations performLogout(); // Clear ASAPP chat session ASAPP('unloadAndClearSession'); } ``` It's recommended to call `unloadAndClearSession` as part of your application's logout process to ensure proper session cleanup and user privacy. After calling this API, you will need to call the `load` API again to reinitialize the chat SDK. --- # Source: https://docs.asapp.com/agent-desk/integrations/web-sdk/web-quick-start.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Web Quick Start If you want to start fast, follow these steps: 1. Embed the Script 2. Initialize the SDK 3. Customize the SDK 4. Authenticate Users In addition, see an example of a [Full Snippet](#full-snippet "Full Snippet"). ## 1. Embed the Script 1. Embed the script directly inline. See the instructions below. 2. Use a tag manager to control where and how the scripts load. The ASAPP Chat SDK works with most tag managers. See the tag manager documentation for more detailed instructions. To enable the ASAPP Chat SDK, you'll first need to paste the [ASAPP Chat SDK Web snippet](#full-snippet) into your site's HTML. You can place it anywhere in your markup, but it's ideal to place it near the top of the `` element. ``` ``` This snippet does two things: 1. Creates a ` ``` **Note:** ASAPP will provide the `APIHostname` and `AppId` values to you after coordination between your organization and your ASAPP Implementation Manager. Once ASAPP determines and provides these values, you can make the following updates: 1. Replace `API_HOSTNAME` with the hostname of your ASAPP API location. This string will look something like ```screen theme={null} 'examplecompanyapi.asapp.com'. ``` 2. Replace `APP_ID` with your Company Marker identifier. This string will look something like `'examplecompany'`. Calling `ASAPP('load')` will make a network request to your APIHostname and determine whether or not it should display the Chat SDK Badge. The Badge displays based on your company's business hours, your trigger settings, and whether or not you have enabled the SDK in your Admin control panel. For more advanced ways to display the ASAPP Chat SDK, see the [JavaScript API Documentation](/agent-desk/integrations/web-sdk/web-javascript-api "Web JavaScript API"). ## 3. Customize the SDK After you Embed the Script and Initialize the SDK, the ASAPP Chat SDK should display and function on your web page. You may wish to head to the [Customization](/agent-desk/integrations/web-sdk/web-customization "Web Customization") section of the documentation to learn how to customize the appearance of the ASAPP Chat SDK. ## 4. Authenticate Users Some integrations of the ASAPP Chat SDK allow users to access sensitive account information. If any of your use cases fall under this category, please read the [Authentication](/agent-desk/integrations/web-sdk/web-authentication "Web Authentication") section to ensure your users experience a secure and seamless session. ## Full Snippet For additional legibility, here's the full Chat SDK Web integration snippet: ```json theme={null} (function(win, doc, hostname, namespace, script) { script = doc.createElement('script'); win[namespace] = win[namespace] || function() { (win[namespace]._ = win[namespace]._ || []).push(arguments) } win[namespace].Host = hostname; script.async = 1; script.src = hostname + '/chat-sdk.js'; script.type = 'text/javascript'; doc.body.appendChild(script); })(window, document, 'https://sdk.asapp.com', 'ASAPP'); ``` --- # Source: https://docs.asapp.com/generativeagent/integrate/web-sdk.md # Source: https://docs.asapp.com/agent-desk/integrations/web-sdk.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Web SDK Overview Welcome to the ASAPP Chat SDK Web Overview! This document provides an overview of how to integrate the SDK (authenticate, customize, display) and the various API methods and properties you can use to call the ASAPP Chat SDK. In addition, it provides an overview of the ASAPP ContextProvider, which allows you to pass various user information to the Chat SDK. If you're just getting started with the ASAPP Chat SDK, ASAPP recommends starting with the [Web Quick Start](/agent-desk/integrations/web-sdk/web-quick-start "Web Quick Start") section. There you will learn the basics of embedding the ASAPP Chat SDK and how to best align it with your site. ASAPP functionality can be integrated into your website simply, by making sure that a snippet of javascript is included in your site template. The subsections below provide both an integration overview and detailed documentation covering everything from how to easily get started with your ASAPP integration through how to implement arbitrarily fine-grained customization of the look and feel and the functioning of ASAPP technology to meet your design and functional requirements. The Web SDK Overview includes the following sections: * [Web Quick Start](/agent-desk/integrations/web-sdk/web-quick-start "Web Quick Start") * [Web Authentication](/agent-desk/integrations/web-sdk/web-authentication "Web Authentication") * [Web Customization](/agent-desk/integrations/web-sdk/web-customization "Web Customization") * [Web Features](/agent-desk/integrations/web-sdk/web-features "Web Features") * [Web JavaScript API](/agent-desk/integrations/web-sdk/web-javascript-api "Web JavaScript API") * [Web App Settings](/agent-desk/integrations/web-sdk/web-app-settings "Web App Settings") * [Web ContextProvider](/agent-desk/integrations/web-sdk/web-contextprovider "Web ContextProvider") * [Web Examples](/agent-desk/integrations/web-sdk/web-examples "Web Examples") --- # Source: https://docs.asapp.com/agent-desk/integrations/chat-instead/web.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Web A feature that prompts customers to use Chat instead of calling. When customers shift volume from phone to chat, this reduces costs and improves the customer experience. When customers tap a phone number, phone button, or any other entry point that the customer company chooses, ASAPP triggers an intercept that gives the customer the option to chat or call. In order to enable this feature, please: 1. Identify Entry Points. Contact your Implementation Manager to determine the best entry point to Chat Instead on your website. On Mobile, the best entry point is a "Call" button or a clickable phone number. On Desktop, the best entry point is a "Call" button. ASAPP recommends that you modify your website to display a "Call Us" button (or other similar language) rather than displaying the phone number, and the "Call Us" button should invoke Chat Instead. ASAPP recommends that you also make all entry points telephone links (href="tel" number). The customer company must specify the formatting to display for the phone number that they pass to the [showChatInstead](../web-sdk/web-javascript-api#-showchatinstead- "'showChatInstead'") API: (800) 123-4567 **Example Use Case:** ```json theme={null} (800) 123-4567 ``` 2. Integrate with the [showChatInstead](../web-sdk/web-javascript-api#-showchatinstead- "'showChatInstead'") API. 3. Chat Instead receives configuration information from ASAPP's Backend (BE), in addition to the channels to display and the order to display them in. Contact your Implementation Manager to turn on Chat Instead and configure these options. If you would like to use Apple Business Chat or other messaging application as an option within Chat Instead, please inform your Implementation Manager. This feature is currently available in the mobile Web SDK and desktop Web SDK. | | | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | --- # Source: https://docs.asapp.com/welcome.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Welcome to ASAPP > A personal AI agent for every customer with ASAPP Customer Experience Platform (CXP) Welcome to the ASAPP documentation! This is the place to find information on how to deploy the **ASAPP CXP**, with **GenerativeAgent**. Learn more about [ASAPP CXP](https://www.asapp.com/cxp). ## Getting Started with GenerativeAgent If you're new to ASAPP CXP, start here to learn how to build your first GenerativeAgent.
Learn how to build a GenerativeAgent that can use your KnowledgeBase to start answering your users' questions.
## Human + AI Empower your GenerativeAgent with human judgment and support by bringing in real-time human judgment, or fully handing off the conversation to a live agent. Learn how to bring human judgment into the AI-driven conversation with a Human in the Loop Agent (HILA). Learn how to use the Agent Desk to directly support customers. [Contact our sales team](https://www.asapp.com/get-started) for a personalized demo. --- # Source: https://docs.asapp.com/agent-desk/integrations/whatsapp-business.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # WhatsApp Business WhatsApp Business is a service that enables your organization to communicate directly with your customers in WhatsApp through your Customer Service Platform (CSP), which in this case will be ASAPP. ## Quick Start Guide 1. Create a Business Manager (BM) Account with Meta 2. Create WhatsApp Business Accounts (WABA) in AI-Console 3. Modify Flows and Test 4. Create and Implement Entry Points 5. Determine Launch and Throttling Strategy ### Create a Business Manager (BM) Account Before integrating with ASAPP's WhatsApp adapter, you must create a Business Manager (BM) account with Meta - visit [this page for account creation](https://www.facebook.com/business/help/1710077379203657?id=180505742745347). Following account creation, Meta will also request you follow a [business verification](https://www.facebook.com/business/help/1095661473946872?id=180505742745347) process before proceeding. ### Create WhatsApp Business Accounts (WABAs) Once a Business Manager account is created and verified, proceed to set up WhatsApp Business Accounts (WABAs) using Meta's embedded signup flow in AI-Console's **Messaging Channels** section. Five total WABAs need to be created: three for lower environments, one for the demo (testing) environment and one for production. Your ASAPP account team can assist with creation of WABAs for lower environments if needed - please reach out with your teams to coordinate account creation. In this signup flow, you will set up an account name, time zone and payment method for the WABA and assign full control permissions to the `ASAPP (System User)`. #### Register Phone Numbers As part of the signup flow, each WABA must have at least one phone number assigned to it (multiple phone numbers per WABA are supported). Before adding a number, you must also create a profile display name, **which must match the name of the Business Manager (BM) account.** For implementation speed, ASAPP recommends using ASAPP-provisioned phone numbers for the three lower environment WABAs. Your ASAPP account team can guide you through this process. All provisioned phone numbers registered to WABAs need to meet [requirements specified by Meta](https://developers.facebook.com/docs/whatsapp/phone-numbers#pick-number). ### Modify Flows and Test The WhatsApp customer experience is distinct from ASAPP SDKs in several ways - some elements of the Virtual Agent are displayed differently while others are not supported. Your ASAPP account team will work with you to implement intent routing and flows to account for nodes with unsupported elements and to validate expected behaviors during testing before launch. #### Buttons and Forms All buttons with external links display using message text with a link for each button. See below for an example of two buttons (**Hello, I open a link** and **Hello, I open a view**) that each render as a message with a link: Similarly, forms that agents send and feedback forms at the end of chat also send messages with links to a separate page to complete the survey. Once users complete the survey, the system redirects them back to WhatsApp. #### Quick Reply Limitations Quick replies in WhatsApp also have different limitations from other ASAPP SDKs: * Each node may only include up to three quick reply options; the system truncates a node with more than three replies and shows only the first three replies. * Each quick reply may only include up to 20 characters; the system truncates a quick reply with more than 20 characters and shows only the first 17 characters, followed by an ellipsis * You can send a node that includes both a button in the message and quick replies, but this is not recommended, as the system will send the links to the customer out of order #### Authentication The WhatsApp Cloud API currently **does not support authentication**. As such, login nodes should not be used in flows that can be reached by users on WhatsApp. #### Attachments Cards Nodes that include attachments, such as cards and carousels, are not supported in this channel. The WhatsApp interface includes voice messages and emojis. WhatsApp also excludes some features that typically support live chat with an agent: * **Images**: Agents cannot view images that customers send. The same applies to voice messages and emojis, which are also part of the WhatsApp interface. * **Typing preview and indicators**: Agents will not see typing previews or indicators while the customer is typing. The customer will not see a typing indicator while the agent is typing. * **Co-browsing**: This capability is not currently supported in WhatsApp ### Create and Implement Entry Points Entry points are where your customers start conversations with your business. You have the option to embed a WhatsApp entry point into your websites in multiple ways: a clickable logo, text link, on-screen QR code, etc. You can also direct to WhatsApp from social media pages or using Meta's Ads platform to provide an entry point. Ads are fully configurable within the Meta suite of products and will result in no costs incurred for conversations that originate via interactions with them. ASAPP does not currently support [Chat Instead](/agent-desk/integrations/chat-instead "Chat Instead") functionality for WhatsApp. ### Determine Launch and Throttling Strategy Depending on the entry points configured, your ASAPP account team will share launch best practices and throttling strategies. --- # Source: https://docs.asapp.com/generativeagent/integrate/zendesk-talk.md > ## Documentation Index > Fetch the complete documentation index at: https://docs.asapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Zendesk Talk > Learn how to integrate GenerativeAgent with Zendesk Talk for automated call handling and ticket creation The Zendesk Talk integration with ASAPP's GenerativeAgent allows callers in your Zendesk environment to have conversations with GenerativeAgent while automatically creating support tickets based on the conversation context. This integration provides phone numbers that you route within Zendesk (either through IVR menus or overflow routing) and uses SIP-IN lines to redirect calls back to Zendesk when needed. This guide covers the customer configuration steps needed to set up the integration with your Zendesk Talk environment. ## How it works At a high level, the Zendesk Talk integration with GenerativeAgent works by routing calls through GenerativeAgent and creating tickets based on conversation outcomes: 1. **Calls are routed to GenerativeAgent** through phone numbers configured in your Zendesk IVR menu or overflow routing 2. **GenerativeAgent handles the conversation** using voice interaction and determines the appropriate response 3. **Calls are redirected back to Zendesk** via SIP-IN when GenerativeAgent needs to transfer to a live agent or complete the call 4. **Tickets are automatically created** in Zendesk based on the conversation context and outcome The integration maintains your existing Zendesk Talk workflows while adding GenerativeAgent capabilities for automated call handling and ticket creation. ## Before you Begin Before setting up the Zendesk Talk integration, you need: * [Get your API Key and Secret](/getting-started/developers#access-api-credentials) * Ensure your API key has been configured to access GenerativeAgent APIs. Reach out to your ASAPP team if you need access enabled. * A Zendesk account with: * Admin access to configure Talk settings * Ability to create SIP-IN lines * Access to configure triggers and business rules * The following information to provide to ASAPP: * **Zendesk API Token** - For ticket creation and management * **Zendesk Subdomain** - Your Zendesk instance subdomain * **Zendesk User Email** - Email associated with the API token * The following information to obtain from ASAPP: * **ASAPP SIP IP Address** - For configuring your SIP-IN line * **ASAPP Overflow Phone Numbers** - For routing calls to GenerativeAgent You may have both sandbox and production environments. Be careful not to mix production phone numbers with Zendesk sandbox or vice versa. See [Zendesk sandbox environments](https://support.zendesk.com/hc/en-us/articles/6150628316058-About-Zendesk-sandbox-environments) for more information. ## Understanding Your Routing Options Zendesk Talk only allows routing via Phone numbers. We enable this for GenerativeAgent by providing you with **one or more phone numbers** that are **mapped to specific GenerativeAgent tasks**. You need to route these phone numbers within your Zendesk environment. The routing approach you choose depends on how you want callers to interact with GenerativeAgent: * **IVR Menu Routing**: Use Zendesk Talks' IVR Menu to route calls to GenerativeAgent based on the caller's input. * **Overflow Routing**: Use Zendesk Talks' Overflow Routing to route calls to GenerativeAgent when you want GenerativeAgent to be the primary point of contact. Work with your ASAPP team to determine which routing approach works best for your specific requirements and the tasks you want GenerativeAgent to handle. ## Step 1: Configure Zendesk SIP-IN Line You need to create a SIP-IN line in Zendesk Talk to receive calls redirected back from GenerativeAgent. The SIP-IN line is used to receive calls redirected back from GenerativeAgent. Go to **Talk** → **Lines** → **Add SIP Line** in your Zendesk admin panel. Adding a SIP-IN Line in Zendesk Talk Dashboard Follow the [Zendesk documentation for adding a SIP-IN line](https://support.zendesk.com/hc/en-us/articles/8397091234586-Adding-a-SIP-IN-line) to complete this step. Configure your SIP-IN line to allow the ASAPP SIP IP address that you obtained from your ASAPP team. This allows calls to be redirected back to your Zendesk Talk environment from GenerativeAgent. Configuring allowed SIP IP addresses for ASAPP in Zendesk Talk SIP-IN line settings After creating the SIP-IN line, you'll receive a SIP destination address. Provide this SIP destination to your ASAPP team along with the other required information (API token, subdomain, and user email) for the integration configuration. ## Step 2: Configure Phone Number Routing Follow the steps for your chosen routing approach: Add GenerativeAgent as an option in your existing IVR menu: 1. Go to **Routing** → **IVR Menu** in your Zendesk admin panel 2. Select your existing IVR menu or create a new one 3. Add the GenerativeAgent phone number(s) as menu options 4. Configure the menu prompts to include GenerativeAgent as a choice 5. Follow the [Zendesk IVR documentation](https://support.zendesk.com/hc/en-us/articles/4408885628698-Routing-incoming-calls-with-IVR) for detailed setup Make GenerativeAgent the primary point of contact: 1. Go to **Talk** → **Lines** → Select your primary entry number 2. Configure the number for call overflow using the [Zendesk overflow call routing guide](https://support.zendesk.com/hc/en-us/articles/4408832017690-Managing-overflow-calls-and-after-hours-call-routing) 3. Set the overflow destination to your GenerativeAgent phone number For each GenerativeAgent phone number, disable voicemail: 1. Go to **Talk** → **Lines** → Select each GenerativeAgent overflow number 2. Disable voicemail to ensure calls are properly handled by the integration Configure each GenerativeAgent phone number as an overflow number: 1. Go to **Talk** → **Lines** → Select each GenerativeAgent overflow number 2. Set up the overflow number configuration (provided by ASAPP) For each GenerativeAgent phone number, decide whether to record overflowed calls: 1. Go to **Talk** → **Lines** → Select each GenerativeAgent overflow number 2. Configure call recording based on your organization's requirements Create an empty group to ensure calls overflow immediately to GenerativeAgent: 1. Go to **Admin Center** → **People** → **Groups** in your Zendesk admin panel 2. Click **Add group** 3. Name the group (e.g., "GenAgent" or "Overflow") 4. **Do not add any agents to this group** - it should remain empty 5. Save the group 1. Go to **Talk** → **Lines** → Select the GenerativeAgent overflow number 2. In the **Routing** section, assign the overflow number to the empty group you created 3. This removes waiting time since no agents are in the queue and overflow triggers automatically Set up automatic ticket management for overflow calls: 1. Go to **Objects and rules** → **Business rules** → **Triggers** in your Zendesk admin panel 2. Click on **Ticket** → **Create trigger** 3. Configure the trigger: * **Trigger name**: Choose a descriptive name (e.g., "Close Overflow Tickets") * **Description**: Optional description for the trigger * **Category**: Choose an appropriate category 4. Set the conditions: * **Ticket contains the tag**: `call_overflow` * **Status is not**: `solved` 5. Set the action: * **Ticket status**: `solved` This automatically closes tickets created from overflow calls to keep your ticket queue clean and prevent confusion with regular support tickets. ## Step 3: Create System Transfer The system transfer function is how GenerativeAgent passes calls back to Zendesk and creates tickets in your Zendesk system during that process. This function is configured in the AI Console and defines the schema for ticket creation. You need to create a system transfer function in the AI Console that defines how tickets are created in Zendesk. 1. Go to **AI Console** → **GenerativeAgent** → **Functions** 2. Select **Create function** → **System Transfer** 3. Create a function with the following schema: ```json theme={null} { "type": "object", "required": [ "subject", "priority", "type", "status", "comment" ], "properties": { "subject": { "type": "string", "description": "Request subject based on the conversation" }, "priority": { "type": "string", "enum": ["urgent", "high", "normal", "low"], "description": "Ticket priority based on the conversation" }, "type": { "type": "string", "enum": ["problem", "incident", "question", "task"], "description": "The type of the request based on the conversation" }, "status": { "type": "string", "enum": ["new", "open", "pending", "hold", "solved", "closed"], "description": "The state of the request" }, "comment": { "type": "string", "description": "Detail summary of the conversation containing all the relevant information provided by the customer" } } } ``` This schema defines the ticket fields that will be created in Zendesk when GenerativeAgent completes a call. Tickets created through live agent escalation will not include the detailed conversation context that tickets created through successful GenerativeAgent completion will have. Add this system transfer function to all relevant GenerativeAgent tasks, including instructions on how to complete these fields based on the conversation context. The Zendesk ticket will be successfully created if GenerativeAgent calls this system transfer function. If live agent escalation happens, a ticket is also created, but without the detailed conversation context. ## Step 4: Test Your Integration Before going live, thoroughly test your integration to ensure it works as expected: Test scenarios such as: * **Normal conversation flow** - Verify GenerativeAgent can handle typical customer inquiries * **Live agent transfer** - Test that calls can be properly transferred to human agents when needed * **Overflow handling** - Ensure calls are properly routed through the overflow system * **Ticket creation** - Verify that tickets are created with correct information and formatting * **Different call types** - Test various types of customer inquiries and requests ## Next Steps Once your Zendesk Talk integration is set up and tested, consider these next steps: Learn how to configure GenerativeAgent's behaviors, tasks, and communication style Configure your APIs to allow GenerativeAgent to access necessary data and perform actions Connect and optimize your knowledge base to improve GenerativeAgent's responses Follow the deployment checklist to launch GenerativeAgent in your production environment