Při volání na 3 různá čísla zobrazí vždy pouze první

SW PBX Asterisk, nastavení, konfigurace, rady, návody, zkušenosti.

Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod stepos » 24 srp 2013 12:27

Hezký den,
jsem trochu jelen z jedné věci. U operátora sbohempevnalinko.cz máme zaregistrovaná tři podobná čísla, která se liší jen poslední číslici 7-9

Ale při zavolání na jakékoliv z nich se vždy v asterisku zobrazí, že hovor přichází na první číslo končící 7.

Když si nastavím účty přímo na telefonu, zvoní správně na správném účtě.

Na technické podpoře mi nějaká slečna říkala, že by to mohlo být nastavením lokálních portů - viz manuál. S asteriskem stále začínám a přesně nerozumím formulaci v jejich manuálu:

"Dále je duležité nastavit Port 5060 u prvního čísla, pokud máte čísel více, hodnotu zvedejte (5062, 5064 …) a na routeru nastavte Port Fowarding na použitý rozsah portů.
Muže být označeno jako Local SIP port."


V současnosti mám nastavené v sip.conf:
Kód: Vybrat vše
Register => cislo7:heslo@91.221.212.167
Register => cislo8:heslo@91.221.212.167
Register => cislo9:heslo@91.221.212.167


[cislo7]
type=peer
username=cislo7
secret=heslo
host=91.221.212.167
canreinvite=no
insecure=invite
context=incoming

[cislo8]
type=peer
username=cislo8
secret=heslo
host=91.221.212.167
canreinvite=no
insecure=invite
context=incoming


[cislo9]
type=peer
username=cislo9
secret=heslo
host=91.221.212.167
canreinvite=no
insecure=invite
context=incoming




Pokud změním
Register => cislo7:heslo@91.221.212.167:5060
Register => cislo8:heslo@91.221.212.167:5062
Register => cislo9:heslo@91.221.212.167:5064

vrací mi to hlášku
-- Registration for 'cislo9@91.221.212.167' timed out, trying again (Attempt #2)
-- Registration for 'cislo8@91.221.212.167' timed out, trying again (Attempt #2)

Nevíte, prosím, někdo, kde je zakopaný pes?

Děkuji za pomoc

Štěpán Pospíšil
stepos
 
Příspěvky: 38
Registrován: 28 led 2013 15:57

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod stepos » 28 srp 2013 17:02

Hezký den, stále hledám řešení, jak vyřešit ten problém, když v sipové hlavičce je správně volané číslo9, ale v konzoli se ukazuje cislo7



INVITE sip:cislo9@nase_ip:5060 SIP/2.0
Via: SIP/2.0/UDP ip_poskytovatele:5060;branch=z9hG4bK669e8a20;rport
Max-Forwards: 70
From: ....
To: <sip:cislo9@nase_ip:5060>


a v konzoli
Executing [cislo9@incoming:1] Dial("SIP/cislo7-000000c8", "SIP/1") in new stack
== Extension Changed cislo7[internal] new state InUse for Notify User 1


v sip conf mám
Kód: Vybrat vše
Register => cislo7:heslo@91.221.212.167/cislo7
Register => cislo8:heslo@91.221.212.167/cislo8
Register => cislo9:heslo@91.221.212.167/cislo9


[cislo7]
type=peer
username=cislo7
callerid=cislo7
secret=heslo
host=91.221.212.167
canreinvite=no
insecure=port,invite
context=incoming

[cislo8]
type=peer
username=cislo8
callerid=cislo8
secret=heslo
host=91.221.212.167
canreinvite=no
insecure=port,invite
context=incoming


[cislo9]
type=friend
username=cislo9
callerid=cislo9
secret=heslo
host=91.221.212.167
canreinvite=no
insecure=port,invite
context=incoming


Stále hledám, co by znamenal port forwarding v tom jejich manuále
"Dále je duležité nastavit Port 5060 u prvního čísla, pokud máte čísel více, hodnotu zvedejte (5062, 5064 …) a na routeru nastavte Port Fowarding na použitý rozsah portů.
Muže být označeno jako Local SIP port."


Ale máme normálně asteriska přímo připojeného do sítě, asterisk je současně router.

Pořád se motám do kola.
Děkuji za jakoukoliv pomoc

ŠP
stepos
 
Příspěvky: 38
Registrován: 28 led 2013 15:57

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod milan.benicek » 03 zář 2013 21:37

Zdravím,
v tom, co popisujete se míchá několik věcí dohromady.
Tak především není úplně šťastné pro vícekanálové propojení dvou ústředen používat samostatné SIP registrace. Profesionálnější je SIP trunk a do něj směrovat hovory pro všechna čísla s tím, že příchozí si pak snadno rozdělíte v extensions podle volaného čísla.

V případě konfigurace se SIP registrací správně používáte "register" definici, která ale slouží výhradně k oznámení vaší IP adresy druhé straně. Jiný úkol tato funkcionalita nemá. PBX operátora se tak dozví kam posílat příchozí hovory. Mimochodem definice UDP portu se netýká vaší strany, ale definuje kde je SIP port na straně operátora (Např. v Grandstream telefonech se ale podobně určuje zdrojový port vaší strany viz. doporučení helpdesku. Z toho je vidět, že počítají spíše se SIP telefony než s napojením PBX). Toto vám nicméně funguje a formát
Kód: Vybrat vše
register => cislo7:heslo@91.221.212.167/cislo7
je správný.

Definice SIP účtů také vypadá použitelně, ale s jednou výjimkou - type=peer se používá pro SIP spoje výhradně ODCHOZÍ. Vy ale potřebujete oboustrannou komunikaci, proto musíte použít type=friend nebo konfiguraci rozdělit na peer (odchozí) a user (příchozí). Zde také očekávám jádro vašeho problému.
Asterisk totiž nejprve hledá SIP konfiguraci podle From: SIP hlavičky a teprve pokud nenajde odpovídající PŘÍCHOZÍ sekci, tak hledá podle IP adresy odesílatele (operátora).
Také bych byl velmi opatrný s položkou insecure a nepoužíval ji pokud to nebude vyloženě nezbytné. Upozorňuji na změnu canreinvite na directmedia.

Protože je ve vaší konfiguraci více věcí, které bych udělal jinak, trochu nevím z jakého konce uchopit závěrečnou radu. Začnu tím, že používáte SIP registraci "naruby" - pokud za standardní situaci beru to, že SIP registrace je určena k připojení SIP telefonů k ústředně, kdy ve From je vždy stejné tel. číslo příslušného telefonu (pobočky).
Ve vašem případě je totiž ve From číslo volajícího a to je pokaždé jiné. Proto nelze použít standardní Asterisk mechanizmus rozlišení podle SIP From a musíte si vystačit s rozlišením podle IP adresy odesílatele.
IP adresa odesílatele (operátora) je ale pro všechny uvedené účty stejná, takže na úrovni sip.conf příchozí hovory nerozlišíte a bude vždy použita první SIP konfigurace (viz chování s cislo7). To nám ale nevadí, protože pokud context u [cislo7] bude obsahovat rozlišení volaného čísla, pak dosáhneme požadovaného chování. Bude stačit něco jako:

Kód: Vybrat vše
[incoming]
exten=> 222333447,1,NoOp(Volano cislo 7)
exten=> 222333447,n,Dial(SIP/200) ; smeruj na pobocku 200
exten=> 222333447,n,Hangup()
exten=> 222333448,1,NoOp(Volano cislo 8)
exten=> 222333448,n,Dial(SIP/201) ; smeruj na pobocku 201
exten=> 222333448,n,Hangup()
exten=> 222333449,1,NoOp(Volano cislo 9)
exten=> 222333449,n,Dial(SIP/202) ; smeruj na pobocku 202
exten=> 222333449,n,Hangup()


Uvedený kód je hodně zjednodušený příklad, ale principiálně by to takto mělo fungovat.

Zkuste a dejte vědět.
milan.benicek
 
Příspěvky: 66
Registrován: 11 led 2013 13:41

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod JardaX » 06 zář 2013 18:58

Přesně tak.
Ještě jedna věc - SIP registrace "naruby" láká k použití HINTu, jenže to nemůže v této konfiguraci fungovat. Je to právě kvůli autorizaci podle IP adresy, která je u všech SIP kont stejná a všechny události se tak mapují na první SIP konto v pořadí.
JardaX
 

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod stepos » 06 zář 2013 19:36

Děkuji moc za odpovědi,
právě kvůli hintům jsem to tolik řešil, abych na grandstreamu gxp2124 mohl monitorovat, která linka je obsazená atd. Nakonec jsem to vyřešil v extensions,conf

Kód: Vybrat vše
[incoming_spv]
exten => _cislo[7-9],1,Set(DEVICE_STATE(Custom:linka${EXTEN:8:1})=RINGING)
exten => _cislo[7-9],n,Set(SPL_LINKA=${EXTEN:8:1})
.
exten => _cislo[7-9],n,Dial(SIP/1&SIP/3&SIP/4&dahdi/4)
exten => _cislo[7-9],n,Set(DEVICE_STATE(Custom:linka${EXTEN:8:1})=INUSE)

exten => _cislo[7-9],n,Hangup()


;polozeni hovoru
exten=> h,1,Set(DEVICE_STATE(Custom:linka${SPL_LINKA})=NOT_INUSE)
exten => h,n,Set(SPL_LINKA=0)



exten => cislo7,hint,Custom:linka7
exten => cislo8,hint,Custom:linka8
exten => cislo9,hint,Custom:linka9





Ještě jednou děkuji za odpovědi, vážím si vašeho času.

Štěpán Pospíšil
stepos
 
Příspěvky: 38
Registrován: 28 led 2013 15:57

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod JardaX » 18 zář 2013 08:40

A funguje to takhle?
Mám totiž za to, že do stavu INUSE se ten custom hint nemůže dostat dřív, než po ukončení hovoru volanou stranou. Podle dokumentace by to šlo jen v případě parametru G(context^extension^priority), kdy volající se posune na nastavenou prioritu a volaný na prioritu+1.
JardaX
 

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Reklama


Notice: Undefined variable: ochutnejvino_cs_affil in /var/www/affil/och_rss.php on line 55

Notice: Undefined variable: ochutnejvino_cs_affil in /var/www/affil/och_rss.php on line 55
Láhev vína
Kvalitní česká a moravská vína oplývají neobyčejnou rozmanitostí, originálními ovocnými tóny, harmonickou plnou chutí a spektrem aromatických látek.
www.ochutnejvino.cz
Reklama
 

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod stepos » 18 zář 2013 15:20

A funguje to takhle?
Mám totiž za to, že do stavu INUSE se ten custom hint nemůže dostat dřív, než po ukončení hovoru volanou stranou. Podle dokumentace by to šlo jen v případě parametru G(context^extension^priority), kdy volající se posune na nastavenou prioritu a volaný na prioritu+1.


Máte pravdu nefunguje, při zvednutí hovoru, zůstává stav ringing.

Nerozumím, kam se ten Váš parametr G píše, můžete mi, prosím, poradit?

Díky
Štěpán Pospíšil
stepos
 
Příspěvky: 38
Registrován: 28 led 2013 15:57

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod JardaX » 18 zář 2013 20:19

Syntaxe je:

Kód: Vybrat vše
Dial(type/identifier, timeout, options, URL)

Zkuste tedy např.:
Kód: Vybrat vše
[incoming_spv]
exten => _cislo[7-9],1,Set(DEVICE_STATE(Custom:linka${EXTEN:8:1})=RINGING)
exten => _cislo[7-9],n,Set(SPL_LINKA=${EXTEN:8:1})

exten => _cislo[7-9],n,Dial(SIP/1&SIP/3&SIP/4&dahdi/4,60,G(hint_context^${EXTEN}^1))
exten => _cislo[7-9],n,Hangup()

[hint_context]
exten => _cislo[7-9],1,Set(DEVICE_STATE(Custom:linka${EXTEN:8:1})=INUSE)
exten => _cislo[7-9],2,NoOp(Strana volana)
JardaX
 

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod stepos » 19 zář 2013 09:08

Tak tohle nefunguje,
ten přeskok do jiného kontextu vyvolal při zvednutí na pobočce obsazovací tón a rozpojení hovoru. I když to není přeskok do jiného kontextu, ale jen na následující řádek, hovor se po zvednutí rozpojí.

Kód: Vybrat vše
[incoming_spv]
exten => _cislo[7-9],1,Set(DEVICE_STATE(Custom:linka${EXTEN:8:1})=RINGING)
exten => _cislo[7-9],2,Set(SPL_LINKA=${EXTEN:8:1})
.
exten => _cislo[7-9],3,Dial(SIP/1&SIP/3&SIP/4&dahdi/4,60,G(incoming_spv^${EXTEN}^4))
exten => _cislo[7-9],4,Set(DEVICE_STATE(Custom:linka${EXTEN:8:1})=INUSE)

exten => _cislo[7-9],n,Hangup()


;polozeni hovoru
exten=> h,1,Set(DEVICE_STATE(Custom:linka${SPL_LINKA})=NOT_INUSE)
exten => h,n,Set(SPL_LINKA=0)



exten => cislo7,hint,Custom:linka7
exten => cislo8,hint,Custom:linka8
exten => cislo9,hint,Custom:linka9
stepos
 
Příspěvky: 38
Registrován: 28 led 2013 15:57

Re: Při volání na 3 různá čísla zobrazí vždy pouze první

Příspěvekod JardaX » 19 zář 2013 11:14

A jo vlastně, hovor musí po vykonání řádků v hint_context skončit, protože tam nic dalšího není. Muselo by se to doplnit např. o Meetme nebo jinou metodu opětovného spojení call legs.

Sice by asi stačilo vytvořit MeetMe 1000 a upravit hint_context kontext takto:
Kód: Vybrat vše
[hint_context]
exten => _cislo[7-9],1,Goto(konf)
exten => _cislo[7-9],2,NoOp(Strana volana)
exten => _cislo[7-9],n,Set(DEVICE_STATE(Custom:linka${EXTEN:8:1})=INUSE)
exten => _cislo[7-9],n(konf),MeetMe(1000)
exten => _cislo[7-9],n,Hangup


Tohle ale není moc elegantní

Možná by bylo lepší to zkusit pomocí U parametru. To by mohlo fungovat, ale nezkoušel jsem to.
Kód: Vybrat vše
[incoming_spv]
exten => _cislo[7-9],1,Set(DEVICE_STATE(Custom:linka${EXTEN:8:1})=RINGING)
exten => _cislo[7-9],n,Set(SPL_LINKA=${EXTEN:8:1})
exten => _cislo[7-9],n,Dial(SIP/1&SIP/3&SIP/4&dahdi/4,60,U(hint_context^${EXTEN}^1))
exten => _cislo[7-9],n,Hangup()

;polozeni hovoru
exten => h,1,Set(DEVICE_STATE(Custom:linka${SPL_LINKA})=NOT_INUSE)
exten => h,n,Set(SPL_LINKA=0)

[hint_context]
exten => _cislo[7-9],1,NoOp(Spoustim hint_context pro volanou stranu)
exten => _cislo[7-9],n,Set(DEVICE_STATE(Custom:linka${EXTEN:8:1})=INUSE)
exten => _cislo[7-9],n,Return


Jestli to budete zkoušet, tak dejte vědět jak to dopadlo, taky by mě to zajímalo.
JardaX
 

Další

Zpět na Asterisk

 


  • { RELATED_TOPICS }
    Odpovědi
    Zobrazení
    Poslední příspěvek
cron