Portál AbcLinuxu, 29. května 2024 06:32


Dotaz: Asterisk a skupinove vyzvananie

18.7.2022 14:24 Dusan
Asterisk a skupinove vyzvananie
Přečteno: 261×
Odpovědět | Admin
Dobry den prajem vsetkym.

Naprogramoval som si aplikaciu v React Native pomocou webrtc, jssip a callkeep, ktora sa pripaja na moj asterisk. Kedze pravidla pre VoIP na iOS a Androide su take, ze samotny hovor sa musi "inicializovat" pomocou CallKit (iOS) a ConnectionService (Android), tak technicky mi hovor na zariadenie funguje nasledovne. Na Asterisk-u sa vygeneruje UUIDv4 a pomocou mojho restapi sa posle na volane zariadenie push notifikacia, ktora "prebudi" callkeep a nasledne asterisk caka znovu na restapi, pokial volane zariadenie nepotvrdi, ze aplikacia sa prebudila, zaregistrovala sa do SIP a moze prijat sipove volanie. Kod asi vyda za tisic slov:

/etc/asterisk/extensions.conf
[general]
static=yes
writeprotect=yes

[default]
exten => _XXX,1,AGI(default)
same  => n,Set(_CALLKEEP=${CALLKEEP})
same  => n,Dial(${PJSIP_DIAL_CONTACTS(${EXTEN})},60,b(handler^addheader^1))
same  => n,Hangup()

[handler]
exten => addheader,1,NoOp()
same  => n,Set(PJSIP_HEADER(add,X-Asterisk-Callkeep)=${CALLKEEP})
same  => n,Return()

[subscribe]
exten => _XXX,hint,PJSIP/${EXTEN}
/usr/share/asterisk/agi-bin/default
#!/bin/bash

while read -e ARG && test -n "${ARG}"; do
  key="$(echo "${ARG%%:*}" | xargs)"
  val="$(echo "${ARG#*:}" | xargs)"
  export ${key}="${val}"
done

function push {
  curl \
    -H "Content-Type:application/json" \
    -X "POST" \
    -d "$1" \
    -m "15" \
    -o "/dev/null" \
    -w "%{http_code}" \
    -k https://restapi.srv/asterisk/push -s 2>/dev/null
}

function bond {
  curl \
    --get \
    --data-urlencode "payload=$1" \
    -m "15" \
    -o "/dev/null" \
    -w "%{http_code}" \
    -k https://restapi.srv/asterisk/push -s 2>/dev/null
}

uuid="$(uuidgen --random)"
echo "SET VARIABLE CALLKEEP \"${uuid}\""

if [[ $(push "{\"${agi_extension}\":{\"uuid\":\"${uuid}\",\"from\":\"${agi_callerid}\",\"name\":\"${agi_calleridname}\"}}") -ne 200 ]]; then
  echo "HANGUP"
fi

if [[ $(bond "{\"uuid\":\"${uuid}\"}") -ne 200 ]]; then
  echo "HANGUP"
fi
Vsetko funguje perfektne, len by som teraz potreboval urobit volaciu skupinu. Teda napriklad aktualne mam 2 SIP ucty (001 a 002) a chcem aby ked zavolam na povedzme cislo 100, tak aby zacali vyzvanat obe cisla. Pozeral som na queues, ale vobec niesom z toho mudry ako zabezpecit aby to preslo vsetko aj s tym restapi volanim.

Za vsetky odpovede vam vopred dakujem
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.7.2022 14:26 X
Rozbalit Rozbalit vše Re: Asterisk a skupinove vyzvananie
Odpovědět | | Sbalit | Link | Blokovat | Admin
https://github.com/antonraharja/book-asterisk-101/blob/master/book-contents/en/Chapter_04/Ring-Groups.md

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.