AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aus eigener Anwendung telefonieren???

Ein Thema von romber · begonnen am 26. Jun 2005 · letzter Beitrag vom 22. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Aus eigener Anwendung telefonieren???

  Alt 26. Jun 2005, 18:14
Hallo!

Mithilfe der TDialerPlus-Kopmonente habe ich meinem Programm die gewünschte Telefon-Funktionalität gegeben - mann kann jetzt aus meinem Programm direkt anrufen. Die Komponente ist eigentlich ganz einfach, die ruft per API Windows-Dialer auf und übergibt die Rufnummer.
Da habe ich aber ein kleines Problem: wenn die Nummer gewählt wird, kann mann nicht hören, was an der anderen Ende der Leitung passiert, ob die Leitung besetzt oder so. Ich meine, den Soundsignal schaltet sich nur dann ein, wenn jemand drankommt. Das finde ich sehr schade.

Kennt jemand das Problemm? Was kann ich dagegen tun?
Kennt jemand irgendwelche alternative Komponenten, die das Problem nicht haben?

Danke!
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#2

Re: Aus eigener Anwendung telefonieren???

  Alt 26. Jun 2005, 18:18
Ähm ich kenne diese Komponente zwar nicht, vielleicht gibt es aber eine Funktion wie zum Beispiel "OnBesetzt" oder "OnFrei". Falls es sowas gibt und dieses Ereignis eintrifft, könntest du einfach einen Sound wie zum Beispiel das Besetztzeichen abspielen. So macht das meine Fritz-Software glaube ich auch.

Oder du suchst mal Bei Google suchenTAPI Delphi.
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: Aus eigener Anwendung telefonieren???

  Alt 27. Jun 2005, 17:14
Nein, sowas hat di Kopmonente eben nicht
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#4

Re: Aus eigener Anwendung telefonieren???

  Alt 27. Jun 2005, 17:24
Hast du vielleicht mal nen Link zu der Komponente oder Homepage ?

Google stellt sich stur:
Zitat:
Es wurden keine mit Ihrer Suchanfrage - TDialerPlus Delphi - übereinstimmenden Dokumente gefunden.
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#5

Re: Aus eigener Anwendung telefonieren???

  Alt 27. Jun 2005, 18:30
Hier ist die Dialer-Komponente
Angehängte Dateien
Dateityp: zip dialerplus_104.zip (8,3 KB, 60x aufgerufen)
  Mit Zitat antworten Zitat
albi99
(Gast)

n/a Beiträge
 
#6

Re: Aus eigener Anwendung telefonieren???

  Alt 27. Jun 2005, 18:47
Hallo romber,

Die Komponente verwendet Assisted Tapi. Damit lässt sich nix anderes machen als ein Gespräch aufbauen. Komponenten die mehr können gibt's wie Sand am Meer.
Such mal nach Hier im Forum suchenAsync Professional. Wenns was kosten darf schau mal hier: topTapi oder hier: TeleTools.

Gruß
albi99
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#7

Re: Aus eigener Anwendung telefonieren???

  Alt 28. Jun 2005, 14:29
Ich hab gerade die Componente TCAPIISDN von Dirk Ruebenbach von der
RWTH-Aachen genutzt (selber googlen).
Die hatte auch kein ereigniss für eine Aufgebaute aber nicht aufgenommene verbindung.
Aber ich konnte dort eins einbauen
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#8

Re: Aus eigener Anwendung telefonieren???

  Alt 28. Jun 2005, 19:16
Zitat von QuickAndDirty:
Ich hab gerade die Componente TCAPIISDN von Dirk Ruebenbach von der
RWTH-Aachen genutzt (selber googlen).
Die hatte auch kein ereigniss für eine Aufgebaute aber nicht aufgenommene verbindung.
Aber ich konnte dort eins einbauen
Dir Komponente habe ich gefunden. Poste bitte die Lösung für die Benachrichtgung einer Aufgebauten aber nicht aufgenommenen Verbindung
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#9

Re: Aus eigener Anwendung telefonieren???

  Alt 29. Jun 2005, 11:25
Du musst die Unit mit TCAPIISDN Kopieren da alles was fehler enthält privat deklariert ist.
Ich hab die Klasse dann umbenannt in TADCCapi (ADC = Brötchengeber).

Suche nach //A.R.

Wenn du Audio dateien abspielst sag bescheid da hab ich noch einen Patch um das Kancken am ende der
der Dateien zu verhindern(Oder suche nach "fill" und passe an der Stelle die Packetgröße an statt sie mit 0 aufzufüllen ).

Ach ja, aus den ereignissen heraus läst sich keine Weitere CAPI Function aufrufen.
Beispiel: im IncommingCall ereigniss kannst bleibt die Connect Methodeun wirksam.
Das liegt daran weil der Handshake mit der CAPI erst nach dem ereignis erfolgt.
Lösung: eine Klasse dazu stellen vom Typ TWincontrol die Handler für WM_USER+n messages empfängt
und die Methoden Triggert.Jetzt kann in den Ereignissen die Message Gesendet werden welche Capi Funktion benutzt werden soll, ...nur PostMessage verwenden.

Delphi-Quellcode:
procedure TADCCapi.CapiEvent( aConnection : TConnection;
                                                 aMsg : TCapiMessage;
                                 var aDefaultHandling : boolean );
var // astruct:TStruct;
     aDTMFDigits:string;
     i:integer;
begin
  SetFError; { Damit die Anwendung den richtigen Error mitkriegt }
  if (aMsg.Header.WordCommand<>DATA_B3_IND) and (aMsg.Header.WordCommand<>DATA_B3_CONF) then
    if _debug>1 then begin
      Debug(CapiGetCommandString(aMsg.Header.WordCommand)+' ('+inttostr(aMsg.Header.WordCommand)+')');
    end
  else if _debug>5 then
      Debug(CapiGetCommandString(aMsg.Header.WordCommand));
  if _debug>4 then
     debugcapimessage(amsg);

  case aMsg.Header.WordCommand of
    { ---------------------------------------------------------------}
    LISTEN_CONF : begin

                  end;
    { ---------------------------------------------------------------}
    DISCONNECT_CONF : Begin

                      end;
    {----------------------------------------------------------------}
    CONNECT_CONF : begin
// Das TConnection-Objekt ist bei einem Fehler bereits NIL
                     if not assigned(aConnection) then
                     Begin
                        {in der Messagenumber wird die ConnectionID gespeichert
                         um die Verbindung ermitteln zu können (siehe CPHand) }

                         FConnectionInfos.FreeConnectionInfo(
                                      TConnectConf(aMsg).header.messagenumber)
                     end
                     else
                     begin //A.R.
                       {dieses event Signalisiert das gerade gewählt wird oder
                      das es einen Fehler bei der Verbindung gab.
                       Ohne dieses Event ginge CONNECT_CONF !!verloren!! }

                       ConnectingFailed(TConnectConf(aMsg).header.messagenumber);
                     end;
                   end;
    { ---------------------------------------------------------------}
    CONNECT_IND : begin
        if Assigned(FIncomingCall)
          then FIncomingCall(aConnection.ID,
                             TConnectInd(aMsg).CallingPartyNumber.Contents,
                             TConnectInd(aMsg).CalledPartyNumber.Contents,
                             TConnectInd(aMsg).CipValue,
                             CapiGetCipValueString(TConnectInd(aMsg).CipValue));

       {Timer vorübergehend deaktivieren}
        if assigned(FTimer) then FTimer.OnTimer := nil;

        FConnectionInfos.createConnectionInfo(aConnection.ID,
                      TConnectInd(aMsg).CallingPartyNumber.Contents,
                      TConnectInd(aMsg).CalledPartyNumber.Contents,
                      TConnectInd(aMsg).CipValue);

        if FDefaultResponseTimeOut > 0 then begin
            { Die Anwendung oder der Benutzer dürfen jetzt auswählen,
              was sie mit dem Anruf tun wollen }


            { ConnectionInfo sind Daten über die Verbindung (aConnection)
              Das Objekt wird beim Disconnect  wieder gelöscht.
              TimeOut:=False bedeutet: Noch kein TimeOut erfolgt!}

            if _debug>2 then
              debug('>> Timer '+inttostr(aConnection.id)+' started');

            if not Assigned(FTimer) then begin // Bei Bedarf Timer erzeugen
              FTimer := TTimer.Create(self);
              FTimer.Interval := 1000; { jede Sekunde }
            end;

        end else begin
            {Es gibt keine Wartezeit. Die Standardreaktion setzt sofort ein.
            TimeOut:=True, da der TimeOut sofort erfolgte. Der Timer reagiert
            dann nicht.}

            if _debug>2 then
              debug('>> Default Response');
            { Die aktuelle Verbindung mit den Standardwerten beantworten }
            ResponseCall (aConnection.ID, FDefaultResponse, FDefaultRejectCause);
        end;
        if assigned(FTimer) then FTimer.OnTimer := OnTimerTick;
      end;
    { ---------------------------------------------------------------}

    DATA_B3_IND : begin
       ProcessSending(aConnection);
       ProcessReceiving(aConnection,Pointer(TDataB3Ind(aMsg).data),
                        TDataB3Ind(aMsg).datalength);

    end;
    CONNECT_B3_IND : begin
      if FDefaultResponse=rClear
      then begin { Reaktion soll rClear und nicht rAccept sein }
          aDefaultHandling := false; { kein rjeAcceptCall schicken }
          FCapi.PutMessage( { sondern Ruf ablehnen }
             TConnectB3Resp.Create( aConnection.NCCI,
                                    rjeB3NormalClear,
                                    TStruct.CreateEmpty));
          FCapi.Disconnect(aConnection); {  ... und auflegen }
      end;
    end;

    { ---------------------------------------------------------------}
    CONNECT_B3_ACTIVE_IND : begin
      if assigned(FOnConnect) then
          FOnConnect(aConnection.ID);
    end;
    { ---------------------------------------------------------------}
    FACILITY_CONF : begin
    end;

    FACILITY_IND : begin
      case TFacilityInd(aMsg).FacilitySelector of
       1:begin { DTMF - Töne }
           aDTMFDigits:=ExtractDTMFDigit(TFacilityInd(aMsg).FacilityIndicationParameter);
           if _debug>2 then
             debug('>> DTMF Digits:'+aDTMFDigits);
           if assigned(FOnDTMF) then begin
               if _debug>2 then
                  debug('?? DTMF Digits.Count = '+inttostr(length(aDTMFDigits)));
               for i:=1 to length(aDTMFDigits) do
                  FOnDTMF(aConnection.ID,aDTMFDigits[i])
           end;
         end;
       end;
    end;

    DISCONNECT_IND : begin { DISCONNECT_RESP macht TCapi }
          if assigned(FOnDisconnect) then
               FOnDisconnect(aConnection.ID);
          { Connection-Info kann gelöscht werden }
          StopRecord(aConnection.ID);
          StopPlay(aConnection.ID);
          FConnectionInfos.FreeConnectionInfo(aConnection.ID);
          if FConnectionInfos.Count=0 then begin {Es besteht keine Verbindung }
             FTimer.Free; { mehr, also kann der Timer gelöscht werden }
             FTimer := nil;
          end;
    end;

  end;
end;
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#10

Re: Aus eigener Anwendung telefonieren???

  Alt 22. Okt 2005, 20:42
Kann mir jemand sagen, wo ich die Komponente von Dirk Ruebenbach finde?
Ich habe getorried und gegoogled aber nicht gefunden....

Vielleicht kann Sie ja jemand hochladen....

MFG
Thomas
Sport ist mord...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz