Ga naar de inhoud
Home » VoIP een IVR (Interactive Voice Response) systeem maken in FreePBX

VoIP een IVR (Interactive Voice Response) systeem maken in FreePBX

Je zou een automatische Receptie kunnen maken die je inkomende gesprekken beantwoord. Deze kan het gesprek meteen opnemen; of doet dit in plaats van de voicemail nadat de telefoon(s) een tig aantal keren zijn overgegaan. De IVR kan de beller natuurlijk (uiteindelijk) ook doorsturen naar een voicemail van een bepaalde extensie.

Zoiets heet een IVR, of voluit Interactive Voice Response … ja ja Interactive.

Het hele idee is dat wanneer naar het openbare telefoonnummer van de PBX gebeld wordt alle vaste telefoons gaan rinkelen. Wordt er niet opgenomen dan ga je door naar de Receptie IVR

Voor een IVR moet je wel een scriptje maken, zodat je weet wat je de beller wilt vertellen/vragen en wat je wilt zeggen als er geen invoer, of verkeerde invoer komt. Heb je dit scriptje af, dan moet je de teksten nog opnemen. Al met al is een beetje creativiteit wel een vereiste LOL.

Maar hoe neem je op, je kunt het buiten FreePBX doen, opslaan als .wav en ze daarna importeren. Maar het kan makkelijker, je kunt een telefoon nemen en deze telefoon gebruiken als stem recorder.

Gesproken tekst opnemen (… kan makkelijker …)

Toets Admin -> Systems Recording en vervolgens +Add Recording.  Dit geeft je het volgende scherm:

Geef het een naam (bij Name) en een beschrijving (bij Description). Zet het op Dutch (bij File List for Dutch). Heb je extern iets opgenomen dat kun ze uploaden (bij Upload Recording} … maar je kunt het ook opnemen met een telefoon uit je systeem. Selecteer hiervoor de bijbehorende extensie (bij Record Over Extension), toets op [Call] en volg de instructies.

Zorg ervoor dat het geconverteerd wordt naar (b.v.) wav en toets [Submit].

Gesproken tekst opnemen met AI (makkelijker gaat het niet worden)

Misschien een beetje eng om je eigen stem op te nemen. Probeer een ander slachtoffer te vinden die het wel wil inspreken. Vinden die het ook eng , of zijn ze gewoon duur … probeer dan AI. Een voorbeeld hiervan is https://elevenlabs.io/ Maar er zijn er vast en zeker nog wel meer.

Script voor de IVR

Eigenlijk is het heel simpel. De eerste stap in een IVR is het Announcement. Dit is het eerste wat de beller krijgt te horen. Vervolgens wordt gewacht op de response van de beller. Komt er binnen een bepaalde tijd geen response dan wordt een Timeout Retry Recording afgespeeld. Wordt er wel wat ingevoerd maar het is een ongeldige invoer, dan wordt Invalid Retry Recording afgespeeld.

Wordt het aantal timeouts, of ongeldige invoer bereikt dat hoor je of de Timeout Recording, of Invalid Recording.

Je kunt zelf aangeven welke invoer geldig is en wat de IVR met deze invoer gaat doen. Klinkt ingewikkeld .. valt wel mee. Daarom een …..

Voorbeeld

Ik ga een voorbeeld geven voor een Receptie.  Er zijn 4 “responses” die je op moet nemen:

Announcement – Eerste melding uit de IVR die de beller te horen krijgt

Voorbeeld:

Hallo beller.
Dat is nu vervelend, bel je ze op en dan antwoorden ze niet!
Je zou het nummer van een intern toestel kunnen toetsen, dan verbind ik je door.
Maar je kunt ook een 1 in toetsen, verbind ik door je met voicemail.
Je zou ook op kunnen hangen.
Maar dat is iets voor sneutjes.
Je kunt ook 0 intoetsen. Dan hang, ik, voor je op.
Maar dat is ook iets voor sneutjes.
Ben je helemaal in “the  mood” dan kun je ook 2 toetsen, dan laat ik intern heel veel telefoons voor rinkelen
Dus, toets het nummer waarmee ik je kan doorverbinden.
Of toets 1 voor voicemail.
Of toets 2 voor heel veel gerinkel.
Of toets 0.
Of hang gewoon op.

>>>>> Deze slaan we op als: ANN – Receptie

Timeout Recording – Prompt to be played before sending the caller to an alternate destination due to the caller pressing 0 or receiving the maximum amount of invalid/unmatched responses (as determined by Invalid Retries)

Voorbeeld:

Ik geloof dat je het wel heel moeilijk vindt. Maakt niet uit, hier is voicemail …

>>>>> Deze slaan we op als: TR – Receptie

Timeout Retry Recording – Prompt to be played when a timeout occurs, before prompting the caller to try again

Voorbeeld:

Je moet wel wat intoetsen! Toe maar je kunt het …

>>>>> Deze slaan we op als TRR – Receptie

Invalid Recording – Prompt to be played before sending the caller to an alternate destination due to the caller pressing 0 or receiving the maximum amount of invalid/unmatched responses (as determined by Invalid Retries)

Voorbeeld:

Ik geloof dat je het wel heel moeilijk vindt. Maakt niet uit, hier is voicemail …

>>>>> Deze slaan we op als IR – Receptie

Invalid Retry Recording – Prompt to be played when an invalid/unmatched response is received, before prompting the caller to try again

Voorbeeld:

Hier kan ik even helemaal niets mee, probeer het nog een keer, je kunt het!

>>>>> Deze slaan we op als IRR – Receptie

Misschien een beetje eng om je eigen stem op te namen. Probeer een ander slachtoffer te vinden die het wel wil inspreken. Vinden die het ook eng , of zijn ze gewoon duur … probeer dan AI. Een voorbeeld hiervan is https://elevenlabs.io/ Maar er zijn er vast en zeker nog wel meer.

Heb je de opnames buiten FreePBX (gewoon in mono!!!) dan moet je ze nog als System Sounds Importeren. Klik Admin -> System Recordings. FreePBX kan .wav  aan. Maar je maakt haar echt gelukkig met excentrieke formaten (.g722). Zelf kan FreePBX de wav’s converteren, maar als het liever zelf doet kan dat b.v. via

for f in $(ls *.wav | cut -f1 -d .) 
do
   ffmpeg -i ${f}.wav -ar 16000 -acodec g722 -b:a 64k ${f}.g722 
done

Dit zijn alle responses die je nodig hebt. Als je ze allemaal hebt in-laten-spreken/ingesproken dan kun je de IVR Receptie configureren.

IVR Configureren

Ga nu naar Applications -> IVR en toets +Add IVR en maak iets als hieronder:

De IVR is klaar. Nu zorgen dat de externe oproep naar deze IVR gaat.

Ga naar Connectivity -> Inbound routes en maak iets als volgt:

 

Klaar!