Asterisk Server mit TCP Ansteuern (VB Programmierung)

2fast_driver

Neuer User
Mitglied seit
8 Aug 2008
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
Halllo,

nach mehrere Tage Programmierung (Visual Basic 2005) habe ich geschafft eine Verbindung mittel TCP zum Asterisk Server herzustellen. Ich kann auch Anmelden (Manager Login) und Call (Originate) durchführen.

Mein Problem ist, Das Programm sollte bei ankommende anrufe Automatisch per pop up (wie Call Monitor) fenster anzeigen wer bzw. welche nummer anruft. Mit welcher Funktion ist es bei Asterisk möglich?

Vielen Dank

MfG
 
hmmm, naja, da musst du die Manager Events auswerten. Siehe -> http://www.voip-info.org/wiki/view/asterisk+manager+events

Vielleicht hilft ditr auch noch das:
http://www.voip-info.org/wiki-Asterisk+manager+API
und das:
http://www.voip-info.org/wiki/view/Asterisk+manager+Examples

Der untere Link wirft die Frage auf warum du das alles selber programmieren willst. ICh habe selbst zb sehr gute Erfahrungen mit der Java API fuer das Manager Interface gemacht. Man braucht das Rad ja nicht 2 mal erfinden.

greetz myname
 
danke für deine schnelle Antwort.


JAVA API ---> ja, ich habe auch mehrere Programme gesehen. Bloß es nutzt mir überhaupt nicht, den das Modul den ich programmiere sollte in ein vorhandenes VB System integriert werden.


"Manager Events auswerten" --> soweit habe ich es auch schon gedacht, aber Asterisk sendet (response) kein End Of Stream (ich denke durch den Setzen des Manager.conf "read = system,call,log,verbose,command,agent,user,config
" sendet Asterisk immer wieder Aktivitäten und somit gibt es kein End Of Stream). So musst ich jedes Mal einzelne response Zeile von Asterisk auslesen, es geht solange gut wenn Asterisk was schickt, wenn Asterisk nicht schickt stützt das Programm ab.

Habt ihr einer Idee wie ich das abfangen können?
 
Naja, asterisk sendet kein EOF aber ein "/r/n" oder? Sollte sich aehnlich auswerten lassen.

Ansonsten glaub ich gibts auf dem Link auf eine API fuer VB.

greetz
 
Hallo,

das was du vorhast interessiert mich auch.
Könntest du mir deinen Quelltext mal zur Verfüfung stellen?

MFG
Bayano
 
Hallo,

hier ist ein Beispiel wie man per TCP einlogt:

Code:
C# Example 

using System; 
using System.Net; 
using System.Net.Sockets; 
using System.Text.RegularExpressions; 
using System.Text; 

namespace AsteriskPrototype 
{ 
class AppConsole 
{ 
 [STAThread] 
 static void Main(string[] args) 
 { 
  Console.WriteLine("Quick and Dirty Asterisk Manager Daemon Test:\n"); 

  // Connect to the asterisk server. 
  Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
  IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("192.168.0.20"), 5038); 
  clientSocket.Connect(serverEndPoint); 

  // Login to the server; manager.conf needs to be setup with matching credentials. 
  clientSocket.Send(Encoding.ASCII.GetBytes("Action: Login\r\nUsername: mark\r\nSecret: mysecret\r\nActionID: 1\r\n\r\n")); 

  int bytesRead = 0; 


  do 
  { 
   byte[] buffer = new byte[1024]; 
   bytesRead = clientSocket.Receive(buffer); 

   //Console.WriteLine(bytesRead + " bytes from asterisk server."); 

   string response = Encoding.ASCII.GetString(buffer, 0, bytesRead); 
   Console.WriteLine(response); 

   if(Regex.Match(response, "Message: Authentication accepted", RegexOptions.IgnoreCase).Success) 
   { 
    // Send a ping request the asterisk server will send back a pong response. 
    clientSocket.Send(Encoding.ASCII.GetBytes("Action: Ping\r\nActionID: 2\r\n\r\n")); 
   } 
  }while(bytesRead != 0); 

  Console.WriteLine("Connection to server lost."); 
  Console.ReadLine(); 
 } 
} 
}
 
habt was gefunden!

Hallo,

ich bin auf app_broadcast gestoßen.

siehe link: http://psg.com/~begg/projects/

beschreibung aus:

http://www.voip-info.org/wiki/view/Asterisk+call+notification

Code:
9. app_broadcast (3rd party tool)
http://psg.com/~begg/projects/
Broadcast is an Asterisk application which you may use to send a generic message over TCP/IP to any number of computers running software configured to listen for these types of messages. Being written in C, Broadcast will be dynamically loaded onto the Asterisk program on startup, making it a highly reliable and scalable option when compared with other solutions based on the Asterisk Gateway Interface (AGI) system...

You would like a nice window to pop up with say the caller id details of an incoming call. With this same software, you may "selectively" broadcast messages for example, you may only want the sales crew to see information about a given caller and not other groups. For example:

 [sales-context]
 exten => s,1,Answer
 exten => s,2,Broadcast(This is a sales call|group=sales)
 exten => s,3,Dial(whatever)

In such a case, you will need to have configured the "sales computers"
with a group attribute set to sales for example:

 [192.168.1.1]
 port = 10296
 group = sales

 [192.168.1.2]
 port = 10345
 group = sales

 [192.168.1.3]
 port = 19002
 group = technical

In such a case as above, onlye the first two machines (192.168.1.1 and 192.168.1.2) will be notified.

All you need configured on the machines that need to receive these messages is software like YAC ("Yet Another Callerid program") which you may get from http://sunflowerhead.com/software/yac/
You will only need to configure the broadcast application to connect to the right port.


hat jemand Broadcast schon eingerichtet?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.