Five9 Direct-to-Transcript configuration

Five9 is a cloud-based, multi-tenant call center provider. VoiceStream is Five9's subscription based solution that provides required events and data to interface with Voci’s Direct-to-Transcript solution. The following sections detail how OrecX Audio and Voci Adapter are configured for Five9.

Note: The addresses in the images above are generic and included to match the addresses in the configuration samples below. The samples must be altered according to the DtT server environment and the real-time analytics application.

OrecX Audio config.xml configuration

<config>
<!-- 
The "AudioOutputPath" attribute specifies the standard location of the orkaudio audio files. 
The specified directory should also be defined in the vociadapter custom.cfg configuration file. 
-->
    <AudioOutputPath>/var/log/orkaudio/audio</AudioOutputPath>

<!-- 
The following configuration attributes specify the audio acquisition type:
-->
    <CapturePlugin>liborksipua.so</CapturePlugin>
    <CapturePluginPath>/usr/lib</CapturePluginPath>

<!-- 
The following configuration attributes specify the audio format to use. Possible values are native, gsm, ulaw, alaw, pcmwav. 
-->
    <StorageAudioFormat>pcmwav</StorageAudioFormat>
    <StereoRecording>true</StereoRecording>
    <TapeNumChannels>2</TapeNumChannels>

<!-- 
The "DeleteNativeFile" attribute determines whether to keep native audio files in addition to compressed.
Change the value to "no" if you want to keep native and compressed audio files. Native files should be deleted under most circumstances.
-->
    <DeleteNativeFile>yes</DeleteNativeFile>

<!-- 
The "AudioOutputEnable" attribute specifies that audio should never be captured to storage:
-->
    <AudioOutputEnable>false</AudioOutputEnable>

<!-- 
The following attributes are for configuring network settings:
-->
    <TrackerHostname>localhost</TrackerHostname>
    <TrackerTcpPort>8080</TrackerTcpPort>

<!-- 
The following configuration attributes include predetermined 
security certifications for Five9:
-->
    <TlsClientCACertFile>/etc/orkaudio/certs/orkweb.pem</TlsClientCACertFile>
    <TlsClientKeyLogFile>/var/log/orkaudio/ssl_keys.log</TlsClientKeyLogFile>

<!-- 
The following attributes are for configuring recording settings:
-->
    <CapturePortFilters>LiveMonitoring</CapturePortFilters>
    <TapeProcessors>BatchProcessing, Reporting</TapeProcessors>
    <BatchProcessingEnhancePriority>true</BatchProcessingEnhancePriority>

<!-- 
The following configuration attributes are for audio file permissions:
-->
    <AudioFileOwner>tomcat</AudioFileOwner>
    <AudioFileGroup>tomcat</AudioFileGroup>
    <AudioFilePermissions>644</AudioFilePermissions>

<!-- 
The following configuration attributes are specific to Five9:
-->
    <SipUAPlugin>
        <SipMode>SipFive9</SipMode>
        <SdpOfferAnswerMode>true</SdpOfferAnswerMode>
        <SupportFeatures>resource-priority,siprec</SupportFeatures>

<!-- 
Specify the (external) IP address of the server running orkaudio with additional configuration attributes: 
-->
        <Contact>12.123.45.67</Contact>
        <SdpAdvertisedMediaIp>12.123.45.67</SdpAdvertisedMediaIp>
        <SofiaLoggingLevel>9</SofiaLoggingLevel>
        <SipFive9WebhookPort>59180</SipFive9WebhookPort>
        <CtiDrivenEnable>yes</CtiDrivenEnable>

<!-- 
Ignore the Five9 "callconnected" Webhook (Don’t start a new call) 
-->
        <SipFive9MapCallEventToStaging>callconnected=ignore</SipFive9MapCallEventToStaging>

<!-- 
The "SipFive9AuthTokenFile" attribute should indicate the file path of the Five9 Trust Token(s) set up with the 
Five9 provisioning Directive. The trust token for Five9 calls is ignored if this is not included in the configuration.
-->
        <SipFive9AuthTokenFile>/etc/orkaudio/TrustToken.txt</SipFive9AuthTokenFile>

<!-- 
The following attribute is the static Webhook Authorization Token that is unique for each Five9 partner.
-->
        <SipFive9HttpAuthToken>abc123</SipFive9HttpAuthToken>
        <SipSofiaNutagUrl>sips:0.0.0.0:5061</SipSofiaNutagUrl>

<!-- 
The following configuration attributes define the rtp port range that orkaudio will use. "RtpBasePort" is the 
bottom of the range and"RtpEndPort" is the top of the range. The values defined here must match firewall 
and Security Group rules of the DtT instance.
-->
        <RtpBasePort>10000</RtpBasePort>
        <RtpEndPort>60000</RtpEndPort>

<!-- 
The "JsonExtractFields" attribute includes Five9 call and customer IVR variables that are mapped to orkaudio metadata 
and passed to vociadapter and the Cobot application.
-->
        <JsonExtractFields>
            Call.skill_name=skill_name, 
            Call.campaign_name=campaign_name, 
            Agent.user_name=user_name, 
            Agent.full_name=full_name,
            IVR_Call_Data.XSell_Call_Type=hipercalltype,
            Call.start_timestamp=call_start_timestamp,
            Call.bill_time=call_bill_time,
            Call.campaign_id=call_campaign_id,
            Call.comments=call_comments,
            Call.disposition_id=call_disposition_id,
            Call.disposition_name=call_disposition_name,
            Call.end_timestamp=call_end_timestamp,
            Call.handle_time=call_handle_time,
            Call.hold_time=call_hold_time,
            Call.language=call_language,
            Call.length=call_length,
            Call.mediatype=call_mediatype,
            Call.number=call_number,
            Call.park_time=call_park_time,
            Call.queue_time=call_queue_time,
            Call.session_id=call_session_id,
            Call.tcpa_date_of_consent=call_tcpa_date_of_consent,
            Call.type=call_type,
            Call.wrapup_time=call_wrapup_time,
            Agent.first_agent=agent_first_agent,
            Agent.id=agent_id,
            Agent.station_type=agent_station_type,
            Customer.record_id=customer_record_id,
            Customer.city=customer_city,
            Customer.company=customer_company,
            Customer.email=customer_email,
            Customer.first_name=customer_first_name,
            Customer.last_name=customer_last_name,
            Customer.number1=customer_number1,
            Customer.number2=customer_number2,
            Customer.number3=customer_number3,
            Customer.state=customer_state,
            Customer.street=customer_street,
            Customer.zip=customer_zip,
            IVR.error_code=ivr_error_code,
            IVR.error_desc=ivr_error_desc,
            IVR.last_module=ivr_last_module,
            IVR.last_state=ivr_last_state,
            Omni.contact_id=omni_contact_id,
            Omni.email=omni_email,
            Omni.email_priority=omni_email_priority,
            Omni.external_priority=omni_external_priority,
            Omni.external_id=omni_external_id,
            Omni.interaction_id=omni_interaction_id,
            Omni.name=omni_name,
            Omni.published_time=omni_published_time,
            Omni.question=omni_question,
            Omni.source=omni_source,
            Omni.start_time=omni_start_time,
            Omni.subject=omni_subject,
            Omni.to=omni_to,
            Omni.total_body_bytes_size=omni_total_body_bytes_size,
            Omni.total_body_chars_size=omni_total_body_chars_size
        </JsonExtractFields>
    </SipUAPlugin>
    <VoIpPlugin>
        <PcapSocketBufferSize>67108864</PcapSocketBufferSize>
    </VoIpPlugin>
</config>

Voci Adapter custom.cfg configuration

[Adapter]
# The "loglevel" parameter controls the amount of detail in log entries. Possible values include debug (default), info, and error. 
# It is set to "debug" in this sample for testing purposes.
loglevel = debug

# The value of the "logdir" parameter should indicate the absolute path to the logging directory. 
logdir = /var/log/vociadapter

# The value of the "handlers" parameter specifies which handlers to use. The handlers available in this configuration file are [LiveCall] and [PostCall]. 
# The [PostCall] handler is only included in this sample for initial debugging.
handlers = LiveCall

# The "numlogfiles" parameter specifies the maximum number of log files to keep.
numlogfiles = 10

[Recorder]
# The "server" parameter in the [Recorder] section requires the hostname of the OrecX server to receive call events. orkaudio is on the same server as 
# vociadapter in this configuration.
server = localhost

# The "audiodir" parameter specifies the directory where vociadapter looks for audio files. The directory defined below is the standard location for 
# orkaudio audio files.
audiodir = /var/log/orkaudio/audio

# Possible values for agentonchannel0 are:
#  always  : agent on channel 0 regardless of call direction.
#  never   : agent on channel 1 regardless of call direction.
#  inbound : agent on channel 0 for inbound calls.
#  outbound: agent on channel 0 for outbound calls.
agentonchannel0 = never

[LiveCall]
# The "server" parameter in a handler section requires the hostname of the V-Blaze server to transcribe audio/utterances.
server = client-v-blaze.com

# The "actions" parameter defines the list of actions for the handler to use. The value defined below refers to the [LivePostToCobot] actions 
# list in the following section.
actions = LivePostToCobot

# The "filters" parameter specifies which filter configurations to call. The value defined below refers to the [LocalPartyFilter] configuration 
# at the end of this sample.
filters = LocalPartyFilter

# The following transcription parameters are passed to the V-Blaze API. Refer to V‑Blaze transcription parameters in the V‑Blaze 
# API Guide for more information.
scrubtext = true
gender = true
redact = true
emotion = true
activitylevel = 50
uttminactivity = 250
uttmaxsilence = 500
uttpadding = 250
uttmaxtime=15
uttmaxgap=0

[LivePostToCobot]
# The value of the "action" parameter should specify the filename of a python script containing instructions for that action. 
# "LogTranscript", "LogUtterances", "SlackLiveUtterances", "PostZipToVSpark", and "SendUttStats" are included with Voci Adapter. 
action   = SendUttDataToCobot

# The "formatter" parameter controls the output format. "TextFormatter" and "JsonFormatter" are included with Voci Adapter.
formatter = TextFormatter

# The following parameters are specific to the endpoint receiving the utterances.
clientid  = Five9Client1
url       = https://real-time-analytics.com/endpoint
apitoken  = aaaa-aaaa-aaaa-aaaa
logtext = false

# The following is the PostCall handler and action that was used for initial debugging.
# [PostCall]
# server = client-v-blaze.com
# actions = PostLog
# filters = LocalPartyFilter

#[PostLog]
# action = LogTranscript
# formatter = TextFormatter

[LocalPartyFilter]
filter = EventFilter
# The "negate" parameter in this configuration is set to false. The expressions are assessed together and all specified conditions 
# must match with call metadata to pass. Refer to Configuring filters in the Direct-to-Transcript Installation Guide for more information 
# on Voci Adapter filters.
negate = false

# Possible values for the "direction" parameter include "in" (incoming call), "out" (outgoing call).
direction = in|out

# The value of the "remoteparty" parameter specifies a phone number or an area code.
remoteparty = ^1412|^1214|^1415