.titleBar { margin-bottom: 5px!important; }

Per Script zwei externe Nummer anrufen?

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von sc0000b, 27 Sep. 2006.

  1. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Gibt es eine Möglichkeit, wie ich aus Asterisk zwei externe Nummern anrufen kann und diese dann ein Gespräch zusammen führen?

    Ich hab folgendes dazu gefunden:

    http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate

    Leider krieg ich bei obenstehendem Command immer den Fehler "channel not available". Mach ich was falsch? Bin ich auf dem falschen Weg? Geht das überhaupt?

    Vielen Dank für Eure Hilfe!
     
  2. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Such mal nach call files auf voip-info.org.

    Das ist für den Anfang etwas einfacher.
     
  3. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    da steh ich aber vor dem gleichen problem:

    zwei EXTERNE nummern anrufen die der PBX vorher nicht bekannt sind scheint nicht zu gehen. :-(
     
  4. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Den Channel baust Du auf mit SIP/nummer@provider_out für Wahl über einen Provider oder SIP/name_des_peers für einen bekannten Client.
     
  5. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    provider_out = name des trunks?
     
  6. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    z.B. Name des peers in der sip.conf

    [provider_out]
    type=peer
    username=user
    secret=geheim
    fromdomain=domain.tld
    host=domain.tld
    usw.
     
  7. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    vielen dank, aber es scheint trotzdem nicht zu funktionieren. :-(

    eigentlich ist die frage nur ein umweg zu meinem eigentlichen problem. ich will das ganze aus einer java-applikation raus machen und nutze dafür die folgende funktion aus asterisk-java (java-schnittstelle zu AGI/AMI):

    originateToExtension()

    dabei müssen folgende parameter mitgegeben werden:
    channel
    context
    exten(sion)
    priority
    timeout

    ...ich hab jetzt folgendes eingegeben:
    channel = SIP/<nummer_des_anrufers>@CityTel
    context = CityTel
    exten = SIP/<nummer_des_angerufenen>@CityTel
    priority = 1
    timeout = 30000 (30 sekunden)

    kriege dabei aber noch immer folgende fehlermeldung:

    Channel SIP/<nummer_des_anrufers>@CityTel is not available.

    noch irgendeine idee auf lager? :)

    der vollständigkeit halber noch die config meines providers in sip.conf:

     
  8. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Nummern stehen in <..>?


    nächster Fehler wäre dann

    exten = SIP/<nummer_des_angerufenen>@CityTel

    so eine EXTEN wirst Du nicht im Dialplan haben.
    Da steht z.B. 089123456

    im Dialpan dann
    exten => _0.,1,DIAL(SIP.....



    Und es muss natürlich [CityTel] in der sip.conf geben
     
  9. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    nein, nummern stehen natürlich nicht in < >, aber die EXTEN gibt's natürlich sowieso nicht. das ganze läuft über eine webapplikation und jede person die zugang zur webapplikation hat, darf auch wild nummern eingeben.

    anwendungsfall sieht dann in etwa so aus:

    personA will personB anrufen, aber dafür selbst nix zahlen. personA nutzt also die webapplikation und gibt die eigene nummer und die von personB ein. webapplikation erhält beide angaben und baut auf diesen ausgehend eine verbindung auf.

    hoffe konnte einigermassen verständlich machen was ich eigentlich machen will. :)

    CityTel gibt's in sip.conf (siehe dazu ausschnitt aus sip.conf)
     
  10. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ist schon klar was Du machen willst, trotzdem musst Du die EXTEN angeben bei dem der angerufen wird.

    Das Problem ist aber schon beim Aufbau des Channels:

    Channel: SIP/089123456@provider

    Hast Du da auch einen Doppelpunkt drin?

    Zeig mal die CLI Ausgabe vom Asterisk
     
  11. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Doppelpunkt?
     
  12. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ja hinter Channel und den anderen Parametern gehört ein Doppelpunkt
    Channel: SIP/089123456@provider

    siehe Doko

    Bei callfiles muss der Doppelpunkt auch rein, Asteriskt nimmt den wohl als Feldtrenner
     
  13. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    "channel:" brauche ich bei asterisk-java soweit ich weiss nicht. parameter ist ja schon als channel definiert. siehe dazu diesen thread zur syntax von der von mir gebrauchten funktion:

    thread 7634 im digium-forum

    find ich im cli-output das gleiche wie im asterisk-logfile? dann könnte ich nämlich einfach den entsprechenden ausschnitt aus den logfiles hier reinkopieren.
     
  14. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich weiß nicht was Java da macht, aber irgendwo klemmt es.

    Kommt auf die Einstellungen an, schau doch mal nach was da steht und setze ansonsten verbose auf 4.

    Außer dem Doppelpunkt sehe ich auch keinen weitere Fehlerquelle mehr, sofern Du Dich an die Doku von voip-info.org gehalten hast.
     
  15. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hab die box nicht nach voip-info-org aufgesetzt. ist ein trixbox-setup, welches aber ansonsten funktioniert. das heisst: es hängen zwei telefone dran und ich kann über die asterisk-box und meinen voip-provider auf externe telefone anrufen und mich auch anrufen lassen. grundsätzlich sollte das ganze also funktionieren.

    ich weiss, hätte mir das leben sicher einfacher gemacht wenn ich asterisk von grund auf selbst aufgesetzt hätte, dazu fehlte mir aber schlicht die zeit, zumal das thema meiner diplomarbeit nicht asterisk ist sondern diesen server bloss als plattform braucht um meine java-wünsche zu erfüllen. :)

    wo bzw. in welchem config-file kann ich den verbose-mode denn einstellen?
     
  16. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    asterisk.conf
    [options]
    verbose = 6

    logger.conf
    [logfiles]
    console => notice,warning,error

    starten mit
    #asterisk -c
     
  17. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hab schnell ein neues logfile erstellt mit 'notice,warning,error,debug'. wenn ich jetzt versuche meine app zu starten bzw. einen anruf zu erstellen kommt folgender output:

    Code:
    Sep 27 18:16:17 DEBUG[27986] chan_sip.c: Auto destroying call '3a5d059456dea08061ee8d1904d2b42e@127.0.0.1'
    Sep 27 18:16:17 DEBUG[28008] manager.c: Manager received command 'Challenge'
    Sep 27 18:16:17 DEBUG[28008] manager.c: Manager received command 'Login'
    Sep 27 18:16:17 DEBUG[28008] acl.c: 0.0.0.0/0.0.0.0/0.0.0.0 appended to acl for peer
    Sep 27 18:16:17 DEBUG[28008] acl.c: 0.0.0.0/0.0.0.0/0.0.0.0 appended to acl for peer
    Sep 27 18:16:17 DEBUG[28008] acl.c: ##### Testing 127.0.0.1 with 0.0.0.0
    Sep 27 18:16:17 DEBUG[28008] acl.c: ##### Testing 127.0.0.1 with 0.0.0.0
    Sep 27 18:16:17 DEBUG[28008] manager.c: Manager received command 'Command'
    Sep 27 18:16:17 DEBUG[28008] manager.c: Manager received command 'Status'
    Sep 27 18:16:17 DEBUG[28008] manager.c: Manager received command 'QueueStatus'
    Sep 27 18:16:17 DEBUG[28008] manager.c: Manager received command 'Originate'
    ...nicht sehr aussagekräftig. ;-)
     
  18. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #18 TinTin, 27 Sep. 2006
    Zuletzt bearbeitet: 27 Sep. 2006
    Auf php basierend habe ich hier eine Anleitung für web-basierte Anrufvermittlung unter Verwendung der Asterisk Manager API veröffentlicht. Siehe Punkt 5 auf der Seite für variable Rückrufnummer. Drumherum kann man sich natürlich noch eine Webseite mit Eingabemaske selbst basteln oder Du rufst das php script direkt aus Deiner Java-Applikation auf.

    Gruß,
    Tin
     
  19. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    nach Originate muss es weitergehen.

    Sonst nimm Ethereal und schau was da genau hingeschickt wird.
    Die Syntax von voip-info.org hast Du ja
     
  20. sc0000b

    sc0000b Neuer User

    Registriert seit:
    21 Sep. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hab versucht die PHP-Geschichte zu meinem Nutzen anzupassen, das Ganze läuft aber noch immer nicht.

    Hab eine eigene Extension namens 'kronos' geschaffen (siehe hier).

    Die SIP-Config meines Providers seht ihr hier.

    Beim Versuch einen Anruf zu tätigen, kriege ich folgenden Output ins Log und meine Java-Applikation wirft noch immer folgende Exception:

    Code:
    ERROR: Couldn't find channel: org.asteriskjava.live.NoSuchChannelException: Channel 'SIP/HIDDEN_CALLER_NUMBER@CityTel' is not available
    Hat irgend jemand eine Ahnung wie sich dieses Problem eingrenzen bzw. lösen lässt?

    Anmerkung: Alle HIDDEN_XYZ-Einträge markieren von mir verfälschte bzw. versteckte Daten. Kann sich wohl jeder selbst vorstellen was jeweils anstelle des HIDDEN_XYZ stand. ;-)