Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#1

Verwenden von TSipClient von SipComponents

  Alt 15. Feb 2024, 19:21
Hi,

auf der Suche nach einer Komponente für SIP bin ich bei https://www.sipcomponents.com/ gelandet.
Soweit scheint das auch erstmal gut zu funktionieren. Und nach ein bisschen Studium der beiliegenden Demo konnte ich auch beim SIP-Provider (In meinem Fall eine Auerwald Commander 6000) registrieren und Calls erfassen und auch das Annehmen eines Calls scheint zu klappen.
Ziel ist es, eine Art Anrufbeantworter ohne Aufzeichnungsfunktion zu erstellen. Soweit, so gut.

Die Dokumentation beschränkt sich jedoch (mehr habe ich bisher nicht gefunden) eben auf dieses Demoprogramm, welches natürlich meinen Anwendungsfall nicht abbildet.

Es geht um folgende drei Event, die Probleme bereiten:

Delphi-Quellcode:
procedure TfrmMain.SipClientCall(Sender: TObject; const Call: ICall);
  function ExtraceNumber(value: string): string;
  begin
    Result:=value;
    Result:=Copy(Result, pos(':', Result)+1, Length(Result));
    Result:=Copy(Result, pos(':', Result)+1, Length(Result));
    Result:=Copy(Result, 1, pos('@', Result)-1);
  end;
begin
  lstCallLog.Items.Insert(0, FormatDateTime('dd.mm.yyyy hh:nn:ss', Now)+' Anruf von '+ExtraceNumber(Call.FromAddr)+' auf '+ExtraceNumber(Call.ToAddr));
  if (Status=stActive) and FileExists(ExtractFilePath(Application.ExeName)+cbbWavefiles.Text) then
  begin
    Call.Answer;
  end;
end;

procedure TfrmMain.SipClientAnswer(Sender: TObject; const Call: ICall);
begin
  lstCallLog.Items.Insert(0, 'Call answered - Play Wave: '+ExtractFilePath(Application.ExeName)+cbbWavefiles.Text);
  Call.PlayWavFile(ExtractFilePath(Application.ExeName)+cbbWavefiles.Text);
  lstCallLog.Items.Insert(0, 'Playind finshed - EndCall');
  Call.EndCall;
end;

procedure TfrmMain.SipClientBye(Sender: TObject; const Call: ICall);
begin
  lstCallLog.Items.Insert(0, 'HangUp');
  //lstCallLog.Items[0]:=lstCallLog.Items[0]+'...HangUp';
end;
SipClientCall funtioniert. Der Call wird mir in meiner ListBox auch richtig angezeigt. Der Anruf wird auch angenommen, das konnte ich testen.
SipClientAnswer wird jedoch zu keinem Zeitpunkt ausgelöst.
Lege ich nun seitens Caller auf, so wird SipClientBye wiederrum einfwandfrei aufgerufen.

Mangels Dokumentation und Source kann ich mir natürlich nur schlecht helfen, da ich nicht wirklich sehe, was die Komponente macht.

Hat hier jemand schon mit SipComponents gearbeitet, und kann mir möglicherweise etwas nachhelfen? (Hänge mal den Source des Programms an. Die DCU's gibt es bei https://www.sipcomponents.com/

69$ wärs mir locker wert, wenn's funktioniert. Weiß jemand, ob man dann auch die Sources bekommt? (Steht leider auf der üppigen Webseite nicht)
Angehängte Dateien
Dateityp: zip SipAnsweringMachine.zip (3,4 KB, 1x aufgerufen)
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (15. Feb 2024 um 19:26 Uhr)
  Mit Zitat antworten Zitat