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)