Autor Beitrag
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Fr 04.04.14 16:54 
Ein freundliches Hallo an alle,

ich möchte eine Wahlhilfe programmieren, die auch bei Geräten wie Fritzcard und Fritzbox funktioniert. Dazu habe ich mich mit der TAPI beschäftigt. Die Schnittstelle ist importiert (TAPI3Lib_TLB). Dabei zeigten sich Unterschiede bei den Methodennamen:
Mit
ausblenden Delphi-Quelltext
1:
2:
function tapiRequestMakeCall(lpszDestAddress : PChar; lpszAppName : PChar;
                             lpszCalledParty : PChar; lpszComment : PChar) : Longint; stdcallexternal 'TAPI32.DLL';
habe ich eine Wählhilfe mit Modem nutzen können. In der "TAPI3Lib_TLB" heißt die gleiche Funktion:

ausblenden Delphi-Quelltext
1:
2:
function MakeCall(const pDestAddress: WideString; const pAppName: WideString; 
                  const pCalledParty: WideString; const pComment: WideString): HResult; stdcall;

Der Unterschied zwischen "tapiRequestMakeCall" und "MakeCall" erschwert natürlich die Suche nach passenden Funktionen.

Steckt da ein bestimmtes Schema hinter??

Um die Wahlhilfe bei einer Fritzcard oder Fritzbox verwenden zu können wäre es notwendig zu wählen, das Gespräch zu parken und dann auf das entsprechende Telefon durchzustellen. Entsprechende Funktionen sind in der TAPI anscheinend vorhanden, doch die Programmierhilfe zeigt sie mir nicht!
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var
  Tel : TAPI;
  Cal : RequestMakeCall;

begin
  Tel := CoTAPI.Create;
  Tel.Initialize;
  Cal := CoRequestMakeCall.Create;
  Cal.MakeCall( PChar( Edit1.Text ), PChar('App'), PChar('Ich'), PChar('Test'));
end;

Wenn ich "Cal." eingebe erscheint nur "MakeCall" aber nicht "BlindTransfer" oder andere Methoden. (Ist ja einfacher in einer solchen Liste zu stöbern als in der "TAPI3Lib_TLB"). Was hab' ich dort übersehen?

Grüße von der Nordsee

Peter
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 04.04.14 17:30 
Bei Delphi XE5 kommt das so heraus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  ITRequest = interface(IDispatch)
    ['{AC48FFDF-F8C4-11D1-A030-00C04FB6809F}']
    function MakeCall(const pDestAddress: WideString; const pAppName: WideString; 
                      const pCalledParty: WideString; const pComment: WideString): HResult; stdcall;
  end;
Da das also offenbar an der Delphiversion liegt, wirst du da leider nicht viel machen können.

Gab es denn in Delphi 4 den Typ WideString schon? Vielleicht ist das der Grund für den Unterschied. Ich meine mich zu erinnern, dass der erst später kam.
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Fr 04.04.14 18:30 
Hallo jaenicke,

Danke für Deine Antwort! Doch sorry, nicht die Parameter sind das Problem, sondern die Methodennamen. Wenn ich "tapiRequestMakeCall" bei MS finde bleibt die Frage wie heißt das Ding bei Delphi, nach welchem String suche ich in der "TAPI3Lib_TLB"? Finde ich "lineBlindTransfer", wonach suche ich dann? "BlindTransfer" ergibt einen Treffer.

Delphi 4 kennt "WideString". PChar in dem Beispiel stammt von mir aus der Zeit der Einarbeitung bei Delphi, da kannte ich "WideString" noch nicht.

Grüße von der Nordsee

Peter

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Ein freundliches Hallo an alle,

die Frage nach den Methodennamen konnte ich inzwischen klären. Den Unterschied macht anscheinend die TAPI-Version.
Ich bin inzwischen auf eine Übersicht gestoßen, die das aufklärt. "lineMakeCall" ist TAPI 2.x, "Dial" heißt es bei TAPI 3.x.

Bleibt noch die Frage zu klären, wie "BlindTransfer" zu erreichen ist. Noch keine Idee!

Grüße von der Nordsee

Peter
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 04.04.14 19:49 
Garfield stellt seit 16.02.2014 seine FritzBox-Komponente in der Delphipraxis vor.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 05.04.14 00:20 
user profile iconPeter18 hat folgendes geschrieben Zum zitierten Posting springen:
PChar in dem Beispiel stammt von mir aus der Zeit der Einarbeitung bei Delphi, da kannte ich "WideString" noch nicht.
Ach so, jetzt verstehe ich. Die DLL hinten dran hatte ich vorhin im Büro beim Überfliegen nicht gesehen. Ich hatte gedacht das wäre bei dir nach dem Importieren herausgekommen.

user profile iconPeter18 hat folgendes geschrieben Zum zitierten Posting springen:
Bleibt noch die Frage zu klären, wie "BlindTransfer" zu erreichen ist. Noch keine Idee!
Nach dem Importieren sieht das bei mir so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  ITAddress = interface(IDispatch)
    ['{B1EFC386-9355-11D0-835C-00AA003CCABD}']
[...]
    function CreateCall(const pDestAddress: WideString; lAddressType: Integer; lMediaTypes: Integer): ITBasicCallControl; safecall;
[...]
Und darin:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  ITBasicCallControl = interface(IDispatch)
    ['{B1EFC389-9355-11D0-835C-00AA003CCABD}']
[...]
    procedure BlindTransfer(const pDestAddress: WideString); safecall;
[...]
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Sa 05.04.14 18:58 
Hallo Perlsau,

Dank Dir für die Antwort. Leider sieht es nach erster kurzer Sichtung danach aus, dass hier nur Einstellungen der Fritzbox bearbeitet werden. Das geht weitgehend über HTML. Die Tapi scheint dabei nicht vorzukommen. Ich möchte aber über Fritz (Box und Card) wählen und das Gespräch auf ein Telefon durchstellen. Bei eingehenden Gesprächen will ich die Rufnummer der Anrufers auswerten und mit gespeicherten vergleichen. Dafür brauche ich die TAPI und später TR064.

Hallo jaenicke,

auch dir Dank für Deine Antwort.

Ich hoffe jemand kann mir bei der Tapi weiterhelfen. Die Methoden sind in der "TAPI3Lib_TLB" enthalten, bisher bekomme ich jedoch immer eine Fehlermeldung, wenn ich sie Einsetze. Wahrscheinlich muß ich so etwas wie eine "Connection" einrichten, oder irgend etwas anderes. Vermutlich ist die Methode dann verfügbar. Da ich jedoch noch kaum Erfahrung mit Delphi-Schnittstellen habe übersehe ich warscheinlich etwas ganz triviales.

Grüße von der Nordsee

Peter
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Mo 07.04.14 16:40 
BeitragVerfasst: Sa 05.04.14 18:58
Hallo Perlsau,

nach etwas genauerer Sichtung sieht es so aus, als ob das ganze auf TR064 basiert. Es ist auch ein Anrufmonitor enthalten. Das könnte den Teil der Entwicklung beschleunigen.

Grüße von der ein wenig sonnigen Nordsee

Peter
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Mi 16.04.14 11:36 
Ein freundliches Hallo an alle,

inzwischen konnte ich herausfinden, wie das mit den "fehlenden" Methoden funktioniert. Leider habe ich nur minimale Informationen zu dem Thema Schnittstellen (eigentlich nur Andeutungen). Nachdem durchstöbern von einem halben Hundert Seiten der "TAPI3Lib_TLB" gelang es die Dispatch-Funktion zu verwenden ... und siehe da, vermißte Methoden erschienen. Für alle mit dem gleichen Problem:

Deklaration (Beispiel):
ausblenden Delphi-Quelltext
1:
2:
3:
var
  D  : ITDispatchMapper;
  CI : ITCallInfo;


Programm:
ausblenden Delphi-Quelltext
1:
2:
  D := CoDispatchMapper.Create;
  D.QueryInterface( ITCallInfo, CI );


Mit "CI." erscheinen dann die Methoden von "ITCallInfo".

Grüße von der Nordsee

Peter