Logische Providerwahl nach Vorwahl und User

sipgateuser

Mitglied
Mitglied seit
17 Jul 2008
Beiträge
564
Punkte für Reaktionen
0
Punkte
0
Ich habe meine Frage schon in http://www.ip-phone-forum.de/showthread.php?t=172054 gestellt und wiederhole sie hier nochmals, da sie ja hier her gehört und Asterisk ja nun grundsätzlich läuft:

Jeder Client (entspricht einer Person) hat mehrere Provider. Grund dafür ist, dass jeder dann auch diesen Account mit einem Softphone am Handy benutzen kann und genau unter dieser Nummer erreichbar ist.

Es soll einen Hauptprovider geben, der verwendet wird, wenn es nicht sinnvollere Verbindungen gibt.

Angerufene Nummern mit einem bestimmten Muster, sollten über einen bestimmten Provider gehen, zB +43780...... sollte über Yesss verbunden werden, +43720...... über Sipgate.

Dazu muss ich die Provider anlegen, klar. Wenn es also 2 Accounts bei 1 Provider gibt, muss ich die doppelt anlegen, oder? Wie verbinde ich das mit der o.a. Rufnummernlogik? Der Hauptprovider soll auch je Softphone anders sein können.
 
das was du (meines verständnisses nach) machen willst, nennt sich least-cost-routing ("LCR"), da es für jeden client anders sein soll, gibts 2 möglichkeiten:

1. du baust für jeden benutzer einen dialplan context
oder
2. du baust dir ein agi script, das das routing (ev. aus einer datenbank) übernimmt.

da beide möglichkeiten eher aufwendig sind, sowohl in erstellung als auch in wartung, würde ich dieses konzept nochmals überdenken und versuchen, einen gemeinsamen weg für alle clients zu suchen.

grüße,
laureen
 
Ein echtes LCR meine ich nicht. Es gibt mir darum, dass zB nicht unsinnger Weise von Yesss zu Sipgate oder umgekehrt telefoniert wird und darüber soll der User nicht nachdenken müssen. Mir ist schon klar, dass 0720 nicht nur Sipgte verwendet und 0780 nicht nur Yesss. Da reicht es aber, wenn zB von 0720-Sipgate zu 0720-Sipcall telefoniert wird und nicht geprüft wird, ob es da eine günstigere Möglichkeit gibt.

Nun hat aber jeder User auch einen eigenen Sipgate-Account und andere Accounts, d.h. es sollte nicht einen Hauptaccount für alle geben, der verwendet werden kann. Jeder sollte seinen eigenen Default-Account haben.

Man könnte das natürlich irgendwie über Vorwahlen lösen, die schon im Telefonbuch eingetragen sind. Ich bin mir aber nicht sicher, ob das in der Praxis eingehalten wird und daher keine Kostentransparenz mehr gegeben ist, ohne das erst wieder analysieren zu müssen.

Kennt wer einen Link, wo man sich einen ähnlichen Fall ansehen kann. Dann kriege ich das schon hin.
 
Jeder Client (entspricht einer Person) hat mehrere Provider. Grund dafür ist, dass jeder dann auch diesen Account mit einem Softphone am Handy benutzen kann und genau unter dieser Nummer erreichbar ist.

Du musst z.B. in der Sip.conf für jeden Benutzer einen Ausgangskontext anlegen. Als Eingangskontext reicht pro Provider einer, da der Provider dir ja die Zielrufnummer liefert.

Ich habe das so gelöst:
Sipgate-ID ist der Userkontext zum Rauswählen in der sip.conf. Dafür nehme ich in der Regel die Rufnummer oder die Account-ID vom Provider, damit ich das bei einer Fehlersuche leicht nachvollziehen kann.

[user1]
exten => _XXX.,1,Set(voipjet-id=12345)
exten => _XXX.,2,Set(sipgate-id=56789)

[user2]
exten => _XXX.,1,Set(voipjet-id=12346)
exten => _XXX.,2,Set(sipgate-id=56780)


gewählt wird dann z.B.

; mit Sipgate raus
[sipgate]
exten => _X.,1,Dial(SIP/${EXTEN}@${sipgate-id},60,Tt)


Jetzt musst du nur noch festlegen unter welchen Vorraussetzung welcher Provider benutzt wird.
 
etzt musst du nur noch festlegen unter welchen Vorraussetzung welcher Provider benutzt wird.

Mir fehlt vor allem noch das Verständnis wie man verschiedene Teile zu einem funktionierenden Ganzen zusammensetzt.

Ich habe ein kleines Bash-Script gemacht um die Logik zu verdeutlichen, ist aber alles fiktiv

Code:
#!/bin/bash

# Beispiel, Logik ist noch nicht optimiert

#Softphone-Durchwahlsystem
#1. Stelle Person: 2-9, 1 reserviert f. Notrufe, 9 diverse Personen
#2.-3. Stelle letzte 2 Stellen der IP des Clients

EXTENSION="$1"
PHONENO="$2"

# Provider1=Yesss privat
# Provider2=Yesss
# Provider3=Sipgate.at
# Provider4=bluesip
# Provider5=dus.net
# Provider6=ahooly

#Provideraccount ist definiert durch User + Providername
#Sipgateaccount von User2 ist daher 23


USER=`echo $EXTENSION | cut -c1`
NOLCR=`echo $PHONENO | cut -c1`

# zB Vorwahl 0720
PREFIX4=`echo $PHONENO | cut -c1-4`
# zB Vorwahl +43720
PREFIX6=`echo $PHONENO | cut -c1-6`
# zB Vorwahl 0043720
PREFIX7=`echo $PHONENO | cut -c1-7`
# zB VOrwahl 00423662
PREFIX8=`echo $PHONENO | cut -c1-8`


if [ "$NOLCR" = "*" ] ; then
	echo "User $USER umgeht LCR"
	# beginnt die Telefonnummer mit * wird nichts geaendert
	NEWPHONENO="$PHONENO"
else
	echo "User $USER verwendet LCR"
	if [ "$USER" = "2" ] ; then
		if [ "$PHONENO" = "069912345678" -o "$PHONENO" = "+4369912345678" -o "$PHONENO" = "004369912345678" ] ; then
			# Provider Yesss von User 1 - privat
			PROVIDER="21"
		else
			if [ "$PREFIX4" = "0780" -o "$PREFIX6" = "+43780" -o "$PREFIX7" = "0043780" ] ; then
				# Provider Yesss von User 1
				PROVIDER="22"
			elif [ "$PREFIX4" = "0720" -o "$PREFIX6" = "+43720" -o "$PREFIX7" = "0043720" ] ; then
				# Provider Sipgate von User 1
				PROVIDER="23"
			else
				# Provider dus.net von User 1
				PROVIDER="25"
			fi
		fi
	elif [ "$USER" = "3" ] ; then
		if [ "$PREFIX4" = "0720" -o "$PREFIX6" = "+43720" -o "$PREFIX7" = "0043720" ] ; then
			# Provider Sipgate von User 2
			PROVIDER="33"
		elif [ "$PREFIX4" = "0780" -o "$PREFIX6" = "+43780" -o "$PREFIX7" = "0043780" ] ; then
			# Provider bluesip von User 2
			PROVIDER="34"
		else
			# Provider dus.net von User 2
			PROVIDER="35"
		fi
	else
		# sonstige User
		PROVIDER="96"
	fi
fi

Ist es möglich ein ähnliches Bash-Skript einzubinden oder macht man solche Anforderungen besser anders?
 
Zuletzt bearbeitet:
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,873
Beiträge
2,303,517
Mitglieder
378,534
Neuestes Mitglied
test-forcepaster