![]() |
AW: TAPI - lineMakeCall - Format der Telefonnummer
Zitat:
Ist in DE der Fall, aber nicht überall. Version 3 setzt voraus das das für nationale Gespräche die 0 vor der Rufnummer zu wählen ist. ist in DE der Fall, aber nicht überall. Es gab mal Ideen das in DE immer die ortsvorwahl zu wählen ist - dann aber ohne vorgängte 0. D.h man müsste z.B. aus München die 2211234567 statt wie bisher die 02211234567 wählen. |
AW: TAPI - lineMakeCall - Format der Telefonnummer
Danke für all eure Tipps, ich habe es nun folgendermaßen gelöst. Ich nehme weiterhin alle möglichen Zeichen aus dem Telefonnummern-String raus, ersetze + durch 00 (alles wie zuvor) nun ersetze ich noch zusätzlich 0049 durch 0, damit meine Telefonanlage die Gespräche innerhalb Deutschlands auch schafft. Ob alles so klappt zeigt die Praxis :stupid:
Delphi-Quellcode:
// überflüssige Zeichen entfernen (Leerzeichen, '-', '/', etc.)
aAddress := StringReplace(aAddress, ' ', '', [rfReplaceAll]); aAddress := StringReplace(aAddress, '-', '', [rfReplaceAll]); aAddress := StringReplace(aAddress, '/', '', [rfReplaceAll]); aAddress := StringReplace(aAddress, '(', '', [rfReplaceAll]); aAddress := StringReplace(aAddress, ')', '', [rfReplaceAll]); aAddress := StringReplace(aAddress, '<', '', [rfReplaceAll]); aAddress := StringReplace(aAddress, '>', '', [rfReplaceAll]); // '+' durch '00' ersetzen (Ländervorwahl) aAddress := StringReplace(aAddress, '+', '00', []); if copy(aAddress, 1, 4) = '0049' then begin // Unsere Telefonanlage kommt mit der eigenen Ländervorwahl nicht zurecht, deswegen weg damit. 03.06.2013 delete(aAddress, 2, 3); end; FillChar(callingNr, sizeof(callingNr), 0); StrPCopy(callingNr, aAddress); i := lineMakeCall(line, @call, callingNr, 0, @CallParams); ... |
AW: TAPI - lineMakeCall - Format der Telefonnummer
Statt der ganzen StringReplace-Aufrufe sollte man vielleicht einfach alles herausfiltern, was keine Ziffer ist. Nicht großartig getestet:
Delphi-Quellcode:
function FilteredNumbers(const NumberStr: string): string;
const NUMBERS = ['0'..'9']; var PSrc, PDest, PCurrent: PChar; begin SetLength(Result, Length(NumberStr)); PSrc := PChar(NumberStr); PDest := PChar(Result); PCurrent := PDest; while PSrc^ <> #0 do begin {$IFDEF UNICODE} if CharInSet(PSrc^, NUMBERS) then {$ELSE} if PSrc^ in NUMBERS then {$ENDIF} begin PCurrent^ := PSrc^; PCurrent := CharNext(PCurrent); end; PSrc := CharNext(PSrc); end; SetString(Result, PDest, PCurrent - PDest); end; |
AW: TAPI - lineMakeCall - Format der Telefonnummer
Hi baumina,
Ich verwende grundsätzlich das kanonische Format für meine Rufnummern. Mit lineTranslateAddress wandle ich diese dann um. Du erhälst dann automatisch die Rufnummer im korrekten Format (davon ausgehend das die Ländereinstellung/Vorwahl richtig in Windows hinterlegt sind). Vielleicht hilft Dir das ja weiter Gruß Alidi |
AW: TAPI - lineMakeCall - Format der Telefonnummer
Zitat:
Durch wildes rumprobieren und mühsames recherchieren im Inet übergebe ich im Moment folgende Parameter ohne wirklich zu kapieren worums geht (bei sowas bin ich glaub zu blond)
Delphi-Quellcode:
lTAPIDialMode := ldmINTERACTIVEVOICE; // so habe ich es gesetzt
{ Zeros CallParams structure } FillChar(CallParams, sizeof(CallParams), 0); CallParams.dwTotalSize := sizeof(CallParams); CallParams.dwBearerMode := LINEBEARERMODE_VOICE; CallParams.dwAddressMode := LINEADDRESSMODE_DIALABLEADDR; case lTAPIDialMode of ldmINTERACTIVEVOICE : CallParams.dwMediaMode := LINEMEDIAMODE_INTERACTIVEVOICE; ldmAUTOVOICE : CallParams.dwMediaMode := LINEMEDIAMODE_AUTOMATEDVOICE; ldmDIGITALDATA : CallParams.dwMediaMode := LINEMEDIAMODE_DIGITALDATA; ldmDATAMODEM : CallParams.dwMediaMode := LINEMEDIAMODE_DATAMODEM; ldmVOICEVIEW : CallParams.dwMediaMode := LINEMEDIAMODE_VOICEVIEW; else CallParams.dwMediaMode := LINEMEDIAMODE_INTERACTIVEVOICE; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz