Bygg din egen telefonrobot

Det är lätt att bygga en telefonrobot.

Du behöver

  • Rasberry Pi
  • Ett 16 Gb SD-kort
  • En GSM-dongel
  • Imagefil med senaste versionen av RasPBX
  • Strömkälla som klarar minst 1,5 A
  • Ett SIM-kort

Kort info om de olika delarna

Det går bra att använda vilken modell av Raspberry Pi som helst. Jag använder en Raspberry Pi 1 Model B från 2012, men nyare modeller finns tillgängliga idag.

Tänk på att välja en GSM-dongel som funkar. För närvarande stöds endast donglar från Huawei. En lista på kompatibela dito finns på chan_dongels github. Jag kör en Huawei E1750, som jag fick från Telia tillsammans med ett mobilt bredband-abonnemang.

Om du har en dongel som är operatörslåst så kan du låsa upp den via något lämpligt verktyg, alternativt skaffa ett kontaktkort från rätt operatör.

Det är även viktigt med störmförsörjningen, därav ett minimikrav på 1,5 A. Anledningen är att dongeln skall drivas av USB-porten och den vanliga märkströmmen på 0,7 A för en Raspberry Pi räcker helt enkelt inte till då.

1. Förbered minneskortet

Ladda ned  RasPBX från raspberry-asterisk.org. Skriv image-filen till minneskortet. Sätt in kortet i din Pi och starta.

Mer info om hur du skriver filen till kortet finns här.

2.  Kör raspi-config

Imagefilen använder bara 4 Gb av ditt kort, men eftersom du har ett kort på 16 Gb så måste du expandera din root-partition till att använda hela utrymmet genom att köra kommandot

raspi-config

Välj sedan expand_rootfs och följ instruktionerna.

3. Ta reda på din IP-adress

När din Pi har startat, lista nätverksinställningarna med

ifconfig

Se efter vilken IP som är listat för eth0 och lägg det på minnet. Nu kan du i fortsättningen använda SSH för att ansluta mot din Raspberry Pi stället för att behöva en skärm och tangentbord inkopplade

4. Konfigurera asterisk och FreePBX

Öppna en webläsare och skriv in IP-adressen från steg 3. Nu laddas GUI:t för FreePBX.

Default login till FreePBX är:
user: admin
password: admin

Följ sedan stegen från den här guiden:
http://wiki.freepbx.org/display/PPS/Quick+Setup+Wizard+on+First+Login

Vi kommer inte att använda SIP för att ta hantera samtal, så den biten kan du hoppa över. När konfigurationen är klar, gå tillbaka till din SSH-session och skriv följande för att ladda in den nya konfigurationen:

amportal restart

Det är bara nödvändigt att ladda om inställningarna för det här sättet första gången. I fortsättningen går det bra att använda apply config-knappen i GUI:t.

5. Avaktivera PIN på ditt SIM kort

För att dongeln skall fungera på rätt sätt måste du avaktivera PIN-koden på ditt SIM-kort. Sätt in kortet i en telefon och använd telefonens säkerhetsinställningar för att ta bort PIN-kontrollen.

6. Installera Chan_dongle och konfigurera

Image-filen som du nyligen installerat innehåller ett smidigt installations-skript för chan_dongle, vilket är programmet som kommer att fungera som brygga, eller som en trunk, till asterisken.
Kör följande kommando:

 install-dongle

Installationskriptet installerar chan_domgle.so och skapar en första konfiguration. När skriptet är klart, anslut GSM-dongeln till din Raspberry Pi. Om du redan hade den ansluten måste du koppla ut den och koppla in den igen.

Logga sedan in i GUI:t i FreePBX. Gå sedan in på Connectivity – Trunks och välj Add Custom Trunk. Välj ett trunknamn, sätt Outbound CallerID till telefonnumret på ditt SIM-kort och skriv sedan följande i fältet Custom Dial String:

dongle/dongle0/$OUTNUM$

Lägg till en utgående och en inkommande route för trunken. För den inkommande, sätt DID Number till SIM-kortets telefonnummer.

Spara och aktivera sedan konfigurationen

7. Kolla att att allt funkar

För att kontrollera installationen, kör följande kommando

asterisk -rx "dongle show device state dongle0"

Du borde då få en utskrift från asterisken som visar status för dongeln. Om allt är ok så kommer det att se ut något i den här stilen:

root@raspbx:~# asterisk -rx "dongle show device state dongle0"
 -------------- Status -------------
 Device                  : dongle0
 State                   : Free
 Audio                   : /dev/ttyUSB1
 Data                    : /dev/ttyUSB2
 Voice                   : Yes
 SMS                     : Yes
 Manufacturer            : huawei
 Model                   : E1750
 Firmware                : 11.126.13.00.00
 IMEI                    : 351910041282620
 IMSI                    : 240016022904648
 GSM Registration Status : Registered, roaming
 RSSI                    : 20, -73 dBm
 Mode                    : No Service
 Submode                 : No service
 Provider Name           : Tele 2 AB
 Location area code      : 52
 Cell ID                 : 5204BF
 Subscriber Number       : Unknown
 SMS Service Center      : +46705008999
 Use UCS-2 encoding      : Yes
 USSD use 7 bit encoding : Yes
 USSD use UCS-2 decoding : No
 Tasks in queue          : 0
 Commands in queue       : 0
 Call Waiting            : Disabled
 Current device state    : start
 Desired device state    : start
 When change state       : now
 Calls/Channels          : 0
 Active                : 0
 Held                  : 0
 Dialing               : 0
 Alerting              : 0
 Incoming              : 0
 Waiting               : 0
 Releasing             : 0
 Initializing          : 0

8. Spela in ljudfiler

Nu kommer det roliga, att spela in ljudfilerna som ligger till grund för de fraser som roboten använder för att prata med den inringande.

Du kan göra lite hur du vill, men i det här exemplet använder jag 16 fraser:

  1. ”Ja, hallå?
  2. ”Hej?”
  3. ”Jag förstår”
  4. ”Jajamensan! Japp.”
  5. ”Jag känner igen det här. Var det du som ringde förra veckan och pratade om samma sak?”
  6. ”Mmm, just det. Var var det du ringde ifrån sa du?”
  7. ”Ja, det här låter bekant. Jag är inte helt säker…..kan det här vara något som passa mig?”
  8. ”Förlåt, men jag hörde inte det där sista riktigt.”
  9. ”Ledsen, men det hörs väldigt dåligt. En gång till tack.”
  10. ”Kan du skruva upp volymen hos dig?”
  11. ”Ja! Nu hörs det mycket bättre. Vet inte vad det kan ha varit. Måste ha varit nåt tillfälligt fel eller nåt”
  12. ”Just det…. vilket företag sa du att du ringde ifrån?”
  13. ”Men saken är den att jag råkat tacka ja till erbjudanden över telefon förr, som jag inte borde ha gjort, så man blir ju lite paranoid ibland när folk ringer.. Finns det någon ångerrätt ifall man ändrar sig?”
  14. ”Ja, det låter rimligt. När man säger det på det sättet så verkar det helt okej.”
  15. ”Hmm okej. Jag är inte helt övertygad ännu. Kan du ge mig lite mer detaljer?”
  16. ”Okej….Det här kan nog vara något att satsa på. Måste bara kolla en grej. Häng kvar en stund….<Vänta och för lite oväsaen i bakgrunden> …..okej. Jag är tillbaka. Var var vi?”

9. Namnge fraserna och kopiera dem

Spara fraserna i wav-format och namnge dem ”Telefontroll1”,  ”Telefontroll2” o.s.v. upp till ”Telefontroll16”. Det är viktigt att filnamnen börjar med stor bokstav.
Kör sedan följande kommando för att skapa en ny fras-katalog:

mkdir /var/lib/asterisk/sounds/Telefontroll

Använd sedan din favorit FTP-klient för att kopiera dina wav-filer till den katalogen.
Du behöver även i wav-fil med bara tystnad på några minuter. Döp den filen till backgroundnoise.wav och lägg den i samma mapp.

10. Skapa en asterisk-destination

Editera filen extensions_custom.conf

nano /etc/asterisk/extensions_custom.conf

Lägg till följande rader i den

[Telefontroll]
exten => talk,1,Set(i=${IF($["0${i}"="016"]?7:$[0${i}+1])})
same => n,ExecIf($[${i}=1]?MixMonitor(${UNIQUEID}.wav))
same => n,Playback(Telefontroll/Telefontroll${i})
same => n,BackgroundDetect(Telefontroll/backgroundnoise,1500)

Detta är ett skript som kommer att leta efter 16 fraser i mappen Telefontroll/. Efter att första filen spelats upp kommer skriptet att vänta till den andra parten är tyst i 1500 millisekunder innan nästa fras spelas upp. Sedan fortsätter det så tills den 16:e frasen har spelats upp, då startar det om på fras 7 och loopar tills dess att inringade lägger på luren.

Spara sedan ändringarna och stäng filen.

11. Skapa en incoming route

Under Connectivity -> Inbound Routes, skapa en ny rutt för inkommande samtal och styr ned all trafik till din Application -> Custom destination -> Telefontroll

12. Lägg till destinationen i FreePBX

Nu när ljudfilerna är på plats och asterisken är konfigurerad är det dags att styra inkommande samtal till Telefontrollet. Logga in på FreePBX igen och välj Admin –> Custom Destinations.

Lägg till en ny custom destination med följande inställningar:

Custom Destination: Telefontroll,talk,1
Description: Telefontroll

Välj sedan Submit Changes följt av Apply Changes.

13. Spela in samtal

Nu borde allt vara igång, men det är inget roligt om inte samtalen sparas någonstans. För att spela in alla samtal, i FreePBX, gå in på Applications -> Call Recording. Välj Add Call Recording.
Skriv in ett namn för din inspelning, typ ”Inkommande samtal”, sätt recordning mode till Force.

Under destination, välj custom destinations och markera sedan ”Telefontroll”.

Nu är allt klart! Inkommande samtal sparas i mappen:

/var/spool/asterisk/monitor

Nu kan du gå ut på nätet och fylla i menlösa enkäter och tävlingar på nätet där fina priser utlovas, men att du samtidigt måste uppge vilken sorts lån du har eller vad som är viktigt för dig när du köper strumpor.

Mycket nöje!

 

 

 

 

 

Annonser