Delen via


Overzicht van ondersteunde telefonie

Een waardevol onderdeel van telefonie is de kleine set functies met de naam Assisted Telephony. Geassisteerde telefonie is ontworpen om spraakoproepen en mediagesprekken beschikbaar te maken voor elke toepassing, niet alleen voor telefoongesprekken. Met andere woorden, met assisted telefonie kunnen toepassingen telefoongesprekken voeren zonder op de hoogte te hoeven zijn van de details van de services van de volledige Telefonie-API. Het breidt telefonie uit naar tekstverwerkingstoepassingen, spreadsheets, databases, persoonlijke informatiebeheerders en andere niet-telefonietoepassingen.

Zie TAPI Quick Function Referencevoor een lijst met TAPI 2.x Assisted Telephony-functies van de Basis Telefonie. TAPI 3.x ondersteunt ondersteunde telefonie via de ITRequest interface.

Het nut van assisted telefonie kan worden geïllustreerd in het volgende voorbeeld. Een spreadsheettoepassing kan functies bevatten die een telefoonnummer bellen voor een spraakoproep. Zolang de toepassing geen van de gedetailleerde oproepbeheer van de volledige Telefonie-API nodig heeft, is Assisted Telephony de eenvoudigste en meest efficiënte manier om het telefonische functionaliteit te geven.

ondersteunde telefonie met een spreadsheettoepassing

Ondersteunde telefonie en de volledige Telefonie-API worden op verschillende manieren gebruikt en geïmplementeerd, dus het wordt niet aangeraden om functie-aanroepen van ondersteunde telefonie en functie-aanroepen van telefonie-API's in één toepassing te combineren.

Ondersteunde telefonie gebruiken

Toepassingen die gebruikmaken van geassisteerde telefonieservices initiëren alleen oproepaanvragen die tijdelijk in de wachtrij worden geplaatst door TAPI. De aanvraagontvangertoepassing haalt deze aanvragen op en voert deze uit namens de toepassing Geassisteerde telefonie. De tapiRequestMakeCall functie vraagt de instelling van een spraakoproep aan. De aanvraagtoepassing heeft geen controle over de aanroep.

MET TAPI kan de gebruiker verschillende of dezelfde aanvraagontvangertoepassingen instellen voor elk van deze services. Een toepassing wordt een ontvanger van de aanvraag door zich te registreren bij lineRegisterRequestRecipient, waarin TRUE- is opgegeven als de waarde voor de parameter bEnable. (Specificeert u FALSE, dan deregistreert de toepassing zich als ontvanger van de aanvraag, wat het moet doen wanneer is vastgesteld dat haar taken als ontvanger voor de huidige sessie zijn voltooid.) De toepassing selecteert de diensten die zij wil afhandelen in de dwRequestMode- parameter van lineRegisterRequestRecipient. Een mogelijke waarde voor een aanvraag is LINEREQUESTMODE_MAKECALL om aan te geven dat de toepassing tapiRequestMakeCall aanvragen verwerkt. Als meerdere toepassingen zich registreren voor dezelfde services, wordt een prioriteitsschema gebruikt waarmee de gebruiker kan selecteren welke toepassing de voorkeur heeft voor het verwerken van aanvragen. Dit prioriteitsschema is identiek aan het schema dat wordt gebruikt voor het afroepen van oproepen en de routering van binnenkomende aanroepen op basis van een lijst met bestandsnamen in HandoffPriorities in het register.

Oproepaanvragen

Geassisteerde telefonie biedt toepassingen met telefonie een gebruiksvriendelijk mechanisme voor het maken van telefoongesprekken zonder dat de ontwikkelaar volledig literaat hoeft te worden in telefonie.

De tapiRequestMakeCall functie vraagt om een spraakoproep tussen de gebruiker en een externe partij, gespecificeerd door het telefoonnummer. De aanvraag wordt ingediend bij TAPI, die deze doorgeeft aan een toepassing die is geregistreerd als ontvanger van dergelijke aanvragen. Deze ontvanger is een Call Manager-toepassing.

Nadat de toepassing de aanvraag heeft ingediend, wordt de oproep volledig beheerd vanuit de call manager-toepassing omdat geassisteerde telefonietoepassingen geen oproepen kunnen beheren. Omdat de complexere aspecten van telefonie en alle bewerkingen van de gebruikersinterface worden verwerkt door de call manager-toepassing, hoeven toepassingen met telefonie niet aanzienlijk te worden gewijzigd. In feite hoeven toepassingen waarmee deze bewerking kan worden aangeroepen vanuit de ingebouwde scripttaal, mogelijk helemaal niet te worden gewijzigd.

De tapiGetLocationInfo functie retourneert de toepassing het land- of regionummer en de plaatscode die de gebruiker heeft ingesteld in de huidige locatieparameters in het Configuratiescherm telefonie. De toepassing kan deze informatie gebruiken om de gebruiker te helpen bij het vormen van de juiste canonieke telefoonnummers, zoals door deze aan te bieden als standaardwaarden wanneer nieuwe nummers worden ingevoerd in een telefoonboekvermelding of databaserecord.

Ontvangers van verzoek

Er zijn twee soorten toepassingen nodig om geassisteerde telefonie uit te voeren. Ondersteunde telefonie-clienttoepassingen zijn toepassingen die geassisteerde telefonie gebruiken door functies aan te roepen die beginnen met het voorvoegsel 'tapi'. Een voorbeeld van een dergelijke clienttoepassing is een spreadsheet waaraan een werkbalkknop of menuopdracht wordt toegevoegd.

Ondersteunde telefonie-servers zijn toepassingen die telefonie-API-functies kunnen uitvoeren die het gevolg zijn van de aanroep van een andere toepassing naar een 'tapi'-voorvoegselfunctie. Om zichzelf bekend te maken als een assisted telefonieserver, registreert een dergelijke toepassing zichzelf als zodanig met behulp van de functie lineRegisterRequestRecipient.

De functies van Assisted Telephony (die beginnen met het voorvoegsel "tapi") worden aanvraagfunctiesgenoemd. Geassisteerde telefonietoepassingen die deze aanvragen verwerken (geassisteerde telefonieservers) worden geadresseerdengenoemd.

Ondersteunde telefonieaanvragen verwerken

Het proces waarmee aanvragen worden geleverd en onderhouden, is als volgt:

  1. Wanneer TAPI een aanvraag voor geassisteerde telefonie ontvangt, wordt gecontroleerd op een ontvanger van de aanvraag, dat wil gezegd, een toepassing die momenteel is geregistreerd om dat type aanvraag te verwerken. Als er een ontvanger van de aanvraag is, wordt de aanvraag in de wachtrij geplaatst en wordt er een LINE_REQUEST bericht verzonden naar de toepassing met de hoogste prioriteit die is geregistreerd voor de service van die aanvraag. Het bericht meldt de ontvanger van de aanvraag dat er een nieuwe aanvraag is aangekomen en bevat een indicatie van de modus van de aanvraag.

  2. Als TAPI een toepassing die momenteel wordt uitgevoerd, niet kan vinden om een dergelijke aanvraag te verwerken, wordt geprobeerd een toepassing te starten die is geregistreerd als dit mogelijk is. Deze registratiegegevens worden vastgelegd in HandoffPriorities in het register. TAPI probeert toepassingen te starten in de volgorde waarin ze worden vermeld in de sectie HandoffPriorities. (Zie de volgende stap.)

    Als er momenteel geen toepassing is geregistreerd, onderzoekt TAPI de lijst met aanvraagverwerkingstoepassingen op de bijbehorende vermelding in HandoffPriorities. Als de gekoppelde regel ontbreekt in het bestand, als er geen toepassingen in het bestand staan of als er geen van de toepassingen in de lijst kan worden gestart, wordt de aanvraag geweigerd met de fout TAPIERR_NOREQUESTRECIPIENT.

    Wanneer een ontvanger van een aanvraag wordt gestart (of deze al dan niet door TAPI is gestart) is het de plicht om lineRegisterRequestRecipient- aan te roepen tijdens het opstartproces en zichzelf te registreren als ontvanger van de aanvraag.

  3. Als een of meer toepassingen worden vermeld in de vermelding, begint TAPI met de eerste vermelde toepassing (hoogste prioriteit) en probeert deze te starten met behulp van de functie CreateProcess. Als de poging om de toepassing te starten mislukt, probeert TAPI de volgende toepassing in de lijst te starten. Wanneer een toepassing met succes wordt gestart, wordt de aanvraag door TAPI in de wachtrij geplaatst en wordt een geslaagde indicatie naar de toepassing geretourneerd, ook al is de aanvraag nog niet aan de ontvanger van de aanvraag aangegeven.

    Nadat de aanvraagontvangertoepassing is gestart, wordt lineRegisterRequestRecipientaangeroepen, waardoor een LINE_REQUEST bericht wordt verzonden, waarbij wordt aangegeven dat de aanvraag in de wachtrij wordt geplaatst. Als de gestarte toepassing om een of andere reden nooit wordt geregistreerd, blijft de aanvraag in de wachtrij en blijft deze voor onbepaalde tijd in de wachtrij totdat een toepassing zich registreert voor dat type aanvraag.

  4. Als TAPI een dergelijke geregistreerde toepassing vindt die al wordt uitgevoerd of is gestart, wordt de aanvraag in de wachtrij geplaatst, een LINE_REQUEST bericht naar de servertoepassing verzonden en wordt een geslaagde indicatie geretourneerd voor de functieaanroep naar de toepassing Geassisteerde telefonie. In dit bericht wordt alleen aangegeven dat de aanvraag is geaccepteerd en in de wachtrij is geplaatst, niet dat deze is uitgevoerd.

Wanneer de servertoepassing klaar is om een aanvraag te verwerken, wordt de lineGetRequest--functie aangeroepen. Hiermee kan het alle informatie ontvangen die nodig is, zoals een adres om te bellen. Vervolgens wordt de aanvraag verwerkt met behulp van de TAPI-functies (zoals lineMakeCall en lineDrop) die anders zouden worden gebruikt om de aanroep te plaatsen. Als u lineGetRequest aanroept, wordt de aanvraag uit TAPI verwijderd en worden de aanvraagparameters gekopieerd in een door de toepassing toegewezen aanvraagbuffer. De grootte en interpretatie van de inhoud van de buffer zijn afhankelijk van de aanvraagmodus.

De server moet ervoor zorgen dat deze de juiste parameters gebruikt bij het uitvoeren van aanvragen. Als u dit doet, worden deze stappen gevolgd:

  1. De ontvanger van de aanvraag ontvangt eerst een LINE_REQUEST bericht waarin wordt aangegeven dat er aanvragen voor kunnen bestaan in de aanvraagwachtrij. Dit vertelt de toepassing om lineGetRequest aan te roepen en deze te blijven aanroepen totdat de wachtrij leeg is (als de aanvraag voor het maken van een nieuwe oproep is) of om een bestaande oproep te verwijderen. Dit bericht bevat niet de parameters voor de aanvraag, behalve in het geval van een aanvraag om een bestaande aanroep te verwijderen.
  2. Als de aanvraag is om een nieuwe aanroep te doen, gebruikt de server voor ondersteunde telefonie de lineGetRequest-functie om de volledige aanvraag op te halen, waaronder de parameters van de aanvraag. De server heeft nu alle informatie die nodig is, zoals het nummer om te bellen of de identificatie van de maker van de aanvraag. Eerst moet de server echter het geheugen toewijzen dat nodig is om deze informatie op te slaan.
  3. Ten slotte voert de server de aanvraag uit door de juiste TAPI-functie of set functies aan te roepen.

Als TAPI geen toepassing kan starten die kan fungeren als ontvanger van een aanvraag, mislukt de geassisteerde telefonie-oproep en wordt de fout TAPIERR_NOREQUESTRECIPIENT geretourneerd.

Opmerkingen over handelingen voor een geadresseerde verzoek

De volgende informatie betreft systemen waarop assisted telefonieaanvragen worden verwerkt:

  • In het standaardregister moet een call manager-toepassing worden vermeld in de lijst met prioriteit voor tapiRequestMakeCall. Het zou handig zijn, maar niet essentieel voor de call manager-toepassing om een menuoptie te hebben waarmee gebruikers deze kunnen instellen op de hoogste prioriteit.
  • Wanneer een ontvangende telefonietoepassing automatisch wordt gestart door TAPI en als dit de enige TAPI-toepassing in het systeem is, initialiseert deze actie TAPI. Als de toepassing voor geassisteerde telefonie het lijnapparaat initialiseert en afsluit voordat deze registreert voor geassisteerde telefonie aanvragen, wordt TAPI ook afgesloten en gaat de aanvraag voor geassisteerde telefonie verloren. Geassisteerde telefonieaanvragen kunnen ook verloren gaan wanneer een andere TAPI-toepassing die wordt gestart, een initialisatie en afsluiting uitvoert.