IVM - Kit de développement logicielCette page est celle du kit de développement logiciel (SDK) de l'assistant téléphonique IVM. Elle doit être utilisée par les programmeurs qui souhaitent écrire leurs propres plug-ins ou pour utiliser l'API d'IVM. Ce SDK est un sujet particulièrement avancé. Pour créer la plupart des systèmes IVR ordinaires, aucune programmation n'est nécessaire. Suivez les instructions du manuel d'IVM, comparez les IVR en exemple et, le cas échéant, utilisez l'un des plug-ins préparés. Avant de tenter d'écrire du code, nous vous conseillons de vous familiariser avec les éléments suivants :
IVM - Rubriques du kit de développement logiciel
À propos des plug-insLes plug-ins peuvent être utilisés pour traiter les informations d'un appelant ou pour fournir des informations à un appel (ou les deux). Des exemples typiques peuvent être l'accès à une base de données, les autorisations de carte bancaire ou la détection de matériel, mais les possibilités sont infinies.Un grand nombre de plug-ins utiles écrits par nos programmeurs sont disponibles en téléchargement gratuit sur cette page : www.nch.com.au/ivm/plugins.html. Pour plus d'informations sur l'utilisation des plug-ins, veuillez consulter la page Utilisation des plug-ins du manuel d'aide d'IVM (Aide ->Sommaire de l'aide). Écrire des plug-ins pour IVMCette documentation est à l'intention des programmeurs souhaitant développer leurs propres plug-ins pour IVM. Les plug-ins peuvent être écrits dans n'importe quel langage pouvant rendre une ligne de commande 32 bits basé sur commande exécutable pour Windows. Les exemples ci-dessous sont écrits en C++ et Perl mais Delphi, VB et un certain nombre de langages sont acceptés. Un plug-in est un fichier exécutable de ligne de commande en mode console. Il s'exécute comme un canal anonyme par IVM à l'ouverture d'un message d'appel sortant. Les variables d'appels sont transmises au plug-in comme arguments de ligne de commande. Par exemple, si vous créez un plug-in appelé "plugin.exe" vous pouvez paramétrer IVM pour ouvrir "plugin.exe %linenumber% %cid% %variable1% %variable2%". Lorsqu'un fichier exe est exécuté en tant que plug-in, IVM attend que le plug-in retourne (qu'il se ferme). Le fichier exécutable du plug-in doit revenir à la fin de la lecture du message d'appel sortant. Si vous devez effectuer des tâches prenant plus de temps, votre plug-in doit créer/exécuter un autre processus et quitter. La valeur de retour peut être constituée de tout nombre de variables envoyées (« imprimées ») par le plug-in à STDOUT dans les paires de données de nom dans le format utilisé par HTTP. Par exemple, "numbervariable=101&textvariable=Space+as+plus". Pour plus d'informations, consulter un ouvrage sur les scripts cgi. Le plus souvent, la valeur de retour la plus utile est le nom du message d'appel sortant suivant devant être lu. Cette variable peut être utilisée comme le nom « Aller au message sortant... ». Exemple C++Ce petit plug-in retourne un numéro aléatoire. Il peut parfois être utile si vous souhaitez diffuser des messages d'appels sortants différents aux appelants de manière aléatoire.Le plug-in a deux options d'arguments. Le premier détermine la plage des valeurs de retour. La valeur par défaut est 10, qui produit des résultats possibles compris entre 0 et 9. Le second est le nom de la variable de retour (par défaut : « rand »). #include <stdlib.h> #include <iostream> int main(int argc, char *argv[], char *[]) { cout << ((argc > 2) ? argv[2] : "rand"); cout << "="; int RandomModulus = (argc > 1) ? atoi(argv[1]) : 10; randomize(); cout << rand() % RandomModulus; } Exemple Perlprint @ARGV > 1 ? $ARGV[1] : "rand"; print "="; $RandomModulus = (@ARGV > 0) ? int($ARGV[0]) : 10; print (int(rand($RandomModulus))); Exemple Visual BasicRemarque : La fonction GetRandomNumber n'est pas présentée ici.Public Sub Main() Dim StdIO As clsStdIO Set StdIO = New clsStdIO StdIO.StdOut "rand=" & GetRandomNumber End Sub Exemple PHPPour exécuter le plug-in, utilisez :Fichier exécutable : C:\PHP\php.exe (ou tout emplacement où vous avez installé php - téléchargez-le depuis www.php.net) Argument 1: -q (empêche l'envoi des en-têtes HTTP) Argument 2: Arguments 3+: Arguments à transmettre au script PHP Pour commencer, un simple script PHP comme celui qui suit doit être utilisé : <?php if (argv[1] == 1234) { print NextOGM=CorrectPIN ; } else { print NextOGM=IncorrectPIN ; } ?> Paramétrez ensuite Argument 3 à %PIN% par exemple (après avoir collecté le code PIN dans cette variable dans un message sortant antérieur) et paramétrez l'option « Aller au message sortant » à %NextOGM%. Exemple JavaIl s'agit d'un plug-in similaire à celui utilisé dans C++, mais dans java. Pour utiliser un plug-in java, java doit être le nom de plug-in de la classe compilée du premier argument suivi par d'autres arguments.public class RandNumGen { public static void main(String[] args) { Calendar cal = Calendar.getInstance(java.util.TimeZone.getDefault()); Random rand = new Random(); rand.setSeed(cal.getTimeInMillis()); int numberOfOptions = Integer.parseInt(args[0])+1; System.out.print("rand=" + rand.nextInt(numberOfOptions)); } } Débogage des plug-insSi vous avez des problèmes lors des tentatives d'utilisation de votre plug-in :
Services de développement de plug-insSi vous ne pouvez pas écrire votre propre plug-in (ou si vous n'avez pas le temps), vous pouvez retenir l'un de nos programmeurs associés pour qu'il le développe pour vous. Les frais commencent autour de 150,00 USD, selon la complexité. Pour demander un devis, veuillez consulter www.nch.com.au/development. Vous pouvez aussi retenir un expert IVM sur la page des connexions des experts d'IVM www.nch.com.au/ivm/fr/experts.html.Utilisation de l'API d'IVML'API d'IVM est utilisé pour laisser à d'autres programmes contrôler IVM (à la différence d'autres plug-ins (à la différence des plug-ins pour lesquels IVM exécute d'autres programmes).Il vous faut IVM v 2.30 ou supérieur pour utiliser cet API. Tous les exemples et les démonstrations ci-dessous sont présentés en C++, mais nous espérons que vous n'aurez aucune difficulté à implémenter les mêmes fonctions en utilisant d'autres langages (par exemple, Visual Basic). Les procédures ci-dessous utilisent un certain nombre de fonctions de l'API de Windows (par exemple, FindWindowEx, SendMessage, etc.). Si vous devez en savoir plus sur ces fonctions et sur la manière de les utiliser, référez-vous à la documentation API de Microsoft Windows. Exécuter IVMAvant d'appeler toute fonction d'appel présentée ci-dessous, IVM doit être en cours d'exécution. Le moyen le plus facile de procéder est de paramétrer l'exécution automatique d'IVM (voir Paramètres).Toutefois, si vous souhaitez le lancer depuis votre programme, utilisez WinExec, ShellExecute ou CreateProcess pour ouvrir : Envoyer des commandes à IVMLes commandes sont envoyées à la fenêtre principale d'IVM. Vous devez d'abord trouver la fenêtre « IVM - Assistant téléphonique » en utilisant FindWindowEx, puis utiliser ensuite SendMessage pour lui envoyer un message de commande IVM (hex 7fff). Utilisez un code comme ceci :#define IVMAPI_WINDOWCAPTION "IVM - Assistant téléphonique" #define WM_IVMAPI_COMMAND 0x7fff int IVMAPISendCommand(int iIVMCommand, LPARAM ExtraData) { HWND hwndIVM = FindWindowEx(NULL, NULL, NULL, IVMAPI_WINDOWCAPTION); if (hwndIVM == NULL) { // IVM non exécuté. // Essayer d'exécuter IVM // ou produire message d'erreur ici... return 0; } return SendMessage(hwndIVM, WM_IVMAPI_COMMAND, iIVMCommand, ExtraData); } La plupart des commandes n'utilisent pas le paramètre ExtraData, nous pouvons donc également définir : inline int IVMAPISendCommandSimple(int iIVMCommand) { return IVMAPISendCommand(iIVMCommand, 0); } Si la commande nécessite une chaîne, vous devez utiliser un objet Windows ATOM pour transmettre la chaîne, comme le montre le code suivant. Il est important de noter que votre code doit supprimer l'ATOM en utilisant GlobalDeleteAtom après que SendMessage soit retourné. int IVMAPISendCommandString(int iIVMCommand, const char* szStringToSend) { ATOM atomExtraInfo = GlobalAddAtom(szStringToSend); int iReturnValue = IVMAPISendCommand(iIVMCommand, (LPARAM)atomExtraInfo); GlobalDeleteAtom(atomExtraInfo); return iReturnValue; } Commandes IVMAPIÀ chaque commande correspond un numéro, qui est envoyé à IVM par l'une des fonctions IVMAPISendCommand ci-dessus.inline int IVMAPIGetVersion() { return IVMAPISendCommandSimple(0); } // Retourne la version actuelle de l'API, qui est actuellement 1. // Si 0 est retourné, IVM ou l'API ne sont pas disponibles. // Si 2 ou plus est retourné, veuillez nous contacter pour une documentation mise à jour. inline void IVMAPITurnOn() { IVMAPISendCommandSimple(1); } // Activation d'IVM (pour répondre aux appels). inline void IVMAPITurnOff() { IVMAPISendCommandSimple(2); } // Désactivation d'IVM (pour ne pas répondre aux appels). inline void IVMAPISelectAnswerOGM(const char* szOGMName) { IVMAPISendCommandString(3, szOGMName); } // Sélectionne le message sortant de réponse par défaut. inline void IVMAPIAddOutboundNumber(const char* szNumber) { IVMAPISendCommandString(4, szNumber); } // Ajoute un autre numéro à appeler à la liste des appels sortants. // szNumber peut inclure le numéro à appeler // et des variables supplémentaires à utiliser pendant l'appel. // par exemple, 5551234567&msgid=666&customer=999 inline void IVMAPISetGlobalVariable(const char* szVariables) { IVMAPISendCommandString(5, szVariables); } // définit les variables IVM Global. Les variables sont codées http au format suivant // variable=valeur&variable2=valeur2&variable3=valeur3 // exemple : site=mainnch&SystemPromptsFolder=c:\defaultIVM Modifier les paramètres IVMTous les paramètres IVM sont contenus dans le Registre. Exécutez regedit.exe pour afficher les paramètres « bruts ». Pour modifier ces paramètres depuis le programme, utilisez la commande de l'API Windows, RegSetValueEx.Ajouter d'autres fonctions à l'API d'IVMSi vous avez besoin de contrôler d'autres fonctions d'IVM depuis votre programme (qui ne peuvent pas l'être avec un plug-in), vous pouvez nous consulter pour que nous ajoutions la fonctionnalité pour vous. Les frais commencent autour de 300,00 USD, selon la complexité. Pour demander un devis, veuillez consulter www.nch.com.au/development.Options de ligne de commandeLes options de ligne de commande sont utilisées pour contrôler l'exécution d'IVM à partir d'un fichier de commandes ou d'une autre application. Les options suivantes sont prises en charge : -on -off -ogm nommessagesortant -outbound nnnnnnnn -ogmoutboundanswer nommessagesortant -ogmoutboundmachine nommessagesortant -outboundlist nomfichier nomfichier -set variables Exemples : IVM.exe -ogm OGM1 -on IVM.exe -outbound 5551234567 IVM.exe phonesystem.ivr -on Autres informationsSi vous avez des problèmes à écrire votre application, veuillez consulter le site www.nch.com.au/support.Nous entretenons maintenant une liste d'experts IVM sur la nouvelle page IVM - Connexion d'experts www.nch.com.au/ivm/fr/experts.html. Ces experts sont des professionnels de l'informatique qui savent comment programmer IVM et qui peuvent intervenir pour assister des systèmes IVM complexes. Vous pouvez aussi demander à être inclus à la liste si vous êtes l'un de ces professionnels. Nous proposons également des services de développement logiciel aux sociétés si vous souhaitez que nous nous chargions du développement ou si vous avez besoin de modifications substantielles sur IVM. Les frais commencent autour de 100,00 USD pour une fonction simple, mais peuvent atteindre 10 000 USD et plus pour le développement de la nouvelle version complète d'une application. Demandez à obtenir un devis sur la page www.nch.com.au/development. Nous pouvons aussi procéder au rebranding d'IVM avec votre logo et vos détails pour une somme modique (voir https://www.nch.com.au/reseller pour plus d'informations). Vous pouvez distribuer le fichier d'installation d'IVM avec votre logiciel (mais il est rigoureusement interdit, en toute circonstance, de distribuer les clés d'inscription ou de tenter de modifier le système d'inscription). Voir les termes de la licence d'IVM (dans le fichier Aide). Normalement, vos clients achèteraient IVM directement auprès de nous. Nous proposons des termes de licence facilités si vous avez besoin de distribuer des versions enregistrées d'IVM. Veuillez consulter https://www.nch.com.au/reseller sous le titre Licence générale de logiciel. |