Genesys Cloud integrazione SIP con IVR esterno

In questi giorni mi è capitato di giocare un po’ con la piattaforma Genesys Cloud ed ho deciso di scrivere un paio di articoli sugli aspetti di integrazione con sistemi esterni, in particolare sulla possibilità di trasferire una chiamata ad un IVR esterno per poi farla rientrare sul flusso Genesys, e sulla possibilità di trasferire ad una coda chat un utente precedentemente accolto su un chatbot esterno. Qui vedremo come gestire il primo caso, quindi trasferire una chiamata da un flusso Genesys ad un IVR esterno.

Iniziamo con due parole su cosa sia Genesys Cloud. Stiamo parlando di una piattaforma di contact center basata su cloud che offre una serie di strumenti per gestire le interazioni con i clienti in modo efficiente ed efficace. Con Genesys Cloud si possono gestire chiamate in entrata e in uscita, messaggi, email e interazioni sui social media, tutto da una singola piattaforma centralizzata. Per tutti i dettagli del caso vi rimando al sito genesys, dove trovate tutte le informazioni e la documentazione ufficiale, alla quale ovviamente non voglio in alcun modo sostituirmi.

Use Case

Un possibile scenario è quello in cui dobbiamo connettere l’ambiente Genesys Cloud con un nostro IVR esterno, e permettere il trasferimento di chiamata da un flusso Architect verso il nostro IVR. In questo caso un utente che viene accolto da un flusso vocale su Genesys può essere trasferito verso il nostro IVR.

genesys-cloud-sip-trunk

In questo articolo vedremo come configurare Genesys per attivare il trasferimento di chiamata al nostro IVR.

Configurare un SIP Trunk verso l’IVR esterno

Prima di procedere alla configurazione del Trunk ci occorrono tutta una serie di informazioni relative al nostro IVR, ma anche sull’ambiente Genesys Cloud.

Dati dell’IVR esterno necessari alla configurazione del SIP Trunk su Genesys

  • SIP Server address (IP o FQDN): è la destinazione verso la quale Genesys Cloud trasmetterà l’INVITE di uscita
  • Protocollo di trasporto usato
  • DNIS di destinazione: è il numero verso cui la chiamata sarà trasferita, cioè la user-part della Request-URI SIP
  • Codec audio supportati dall’IVR
  • IP da inserire in White List per permettere il corretto scambio dati (SIP e RTP) tra Genesys Cloud e l’IVR esterno

Informazioni di Genesys utili

In presenza di filtri sugli indirizzi IP sarà necessario conoscere l’elenco dei possibili indirizzi IP utilizzati da Genesys Cloud, sia per la parte SIP che per la parte audio.

Configurazione del Cloud Trunk

Sulla console di Genesys Cloud, in Admin selezioniamo Telephony e poi Trunks, quindi Create New.

create-new-trunk

Iniziamo ad inserire i dati richiesti per la configurazione del Trunk.

  1. Assegnamo un nome al Trunk
  2. Scegliamo BYOC Carrier come Type, e Generic BYOC Carrier come sub-type
  3. Selezioniamo il protocollo di trasporto corrispondente all’interfaccia SIP dell’IVR da integrare
  4. Impostiamo Pure Cloud default come Number Plan Site
  5. In Inbound SIP Termination Identifier inseriamo un ID univoco: l’ID è un parametro mandatorio ed utilizzato per identificare in modo univoco il trunk nel caso di chiamate SIP inbound, ma non è usato nello scenario di trasferimento outbound

configure-trunk-type

  1. In Outbound SIP DNIS possiamo configurare il Destination Number su cui sarà trasferita la chiamata e corrisponde alla user-part della Request-URI SIP dell’INVITE vero l’IVR
  2. In SIP Servers or Proxies inseriamo l’indirizzo (o gli indirizzi se più di uno) corrispondente al nostro IVR

configure-trunk-destination

  1. Configuriamo l’indirizzo o gli indirizzi IP con cui l’IVR esterno si presenta su internet, in modo da abilitarli in white list

configure-trunk-whitelist

Continuiamo con la configurazione inserendo gli ultimi dettagli.

  1. Nella sezione General possiamo configurare i limiti di chiamate concorrenti e call rate
  2. Nella sezione Identity disabilitiamo Address Omit + Prefix per il Calling ed il Called in modo da preservare il prefisso + sugli Header To e From
  3. Nella sezione Media possiamo configurare i codec audio supportati dall’IVR
  4. Nella sezione Protocol abilitiamo Conversation Headers (il ConversationId viene veicolato nell’INVITE come Custom Header), abilitiamo UUI Passthrough (lo User-to-User Header viene usato per veicolare dati da Genesys Cloud al nostro IVR), abilitiamo Take Back and Transfer (permette di attivare il trasferimento all’indietro dall’IVR al flusso Genesys tramite metodo SIP REFER)

configure-trunk-details

Configurazione di un Outbound Route

Ora che abbiamo creato un nuovo trunk SIP BYOC Cloud, dedicato al trasferimento delle chiamate da Genesys Cloud all’IVR SIP esterno, dobbiamo assicurarci che questo trunk possa essere selezionato quando si indirizzano numeri specifici all’interno del tuo flusso. È necessario quindi creare una regola in uscita per il trunk esterno SIP specifico e associarvi un piano numerico.

Sulla console di Genesys Cloud, in Admin andiamo su Telephony e poi Sites, quindi selezioniamo il sito sul quale vogliamo aggiungere il SIP Trunk creato.

configure-site

  1. Apriamo il tab Numbers Plans per creare un nuovo Number Plan

configure-number-plan

  1. Apriamo il tab Outbound Routes per creare una nuova Outbound Route da associare al Trunk con il Number Plan appena creato

configure-route

Aggiungere il task di trasferimento su un flusso

A questo punto abbiamo tutto il necessario per poter trasferire una chiamata da un flusso Archtect di Genesys Cloud ad un IVR esterno. Ci basterà modificare il flusso inserendo un azione di Transfer to Number e configurando come numero di destinazione uno di quelli appartenenti al Number Plan che abbiamo creato in precedenza ed assegnaato alla Ountbound Route collegata al Trunk specifico.

configure-flow-transfer

Sull’azione di trasferimento la chiamata sarà traferita dal Flusso Architect di Genesys al nostro IVR, che riceverà un INVITE SIP sulla Request URI configurata nel BYOC Trunk.

configure-flow-transfer

Andando a guardare l’INVITE possiamo notare tra i vari Header trasmessi, anche lo User-to-User ed il ConversationId veicolato in x-inin-cnv.

	
	INVITE sip:xxxxxxxxxxxxxxxxxxxxxxxxxxxx@yyyyyyyyyyyyyyy:5060 SIP/2.0
	Record-Route: <sip:18.184.11.49:5060;r2=on;transport=udp;ftag=4Uwqu-I;lr>
	Record-Route: <sip:10.72.14.171:5060;r2=on;transport=udp;ftag=4Uwqu-I;lr>
	To: "ShortNumberToPMB" <sip:200221@yyyyyyyyyyyyyyy>
	From: "Roberto Lucchetti" <sip:zzzzzzzzzzzzz@18.184.11.49>;tag=4Uwqu-I
	Call-ID: f6e43cfb-4d57-4f2f-bccf-b8e16f3a36af
	Via: SIP/2.0/UDP 18.184.11.49:5060;branch=z9hG4bK223.54c3fff1.0
	Via: SIP/2.0/UDP 10.72.236.193:6060;branch=z9hG4bK223.b4836df5.0;i=0ba132c4
	CSeq: 1 INVITE
	Max-Forwards: 68
	Allow: INVITE, ACK, CANCEL, BYE, OPTIONS, INFO, REFER
	Supported: norefersub, timer
	Accept: application/sdp
	Contact: <sip:zzzzzzzzzzzzz@10.72.236.193:6060;did=be2.aac6cdf>
	x-inin-cnv: 3e8482fb-f9c1-4ba5-9a5d-282ca6ef660b
	User-to-User: 00;encoding=hex;purpose=isdn-uui;content=isdn-uui
	Content-Type: application/sdp
	User-Agent: GENESYS-SIPSERVICE/1.0.0.7390
	Content-Length: 271