Saber que variables se envían o reciben

Tengo un programa, que cuando recibe un evento lanza un comando para abrir una aplicación externa. El desarrollador del programa dice:

("cmdCallStart" - runs specified command when connection established. Caller ID passed as parameter.)

No sé si existe alguna manera de saber que parámetro estoy recibiendo en un .bat ya que el desarrollador no indica cual es la variable que recibe el programa externo.

Si existe el modo, quiero recoger esta variable para después enviarla a mi base de datos.

Respuesta
1

No sé si entiendo bien lo que quieres. Esto es lo que yo entiendo:

1. Existe un programa que, en alguna situación, invoca a un BAT pasándole, según se indica en el texto en inglés que aportas, algo que llama el "caller ID" (ID del llamante).

2. Conoces el BAT invocado (podría llamarse cmdCallStart, pero no queda claro).

3. Puedes editar el BAT para que muestre, por ejemplo, el parámetro o parámetros usados en la invocación.

Se es así solo tienes que saber que cuando se invoca a un BAT con parámetros esos parámetros (separados por espacios) se manejan internamente con nombres como %1, %2, ...,%9 (9 es el máximo, en principio, aunque la invocación pueda usa más de 9 parámetros, pero esa es otra historia). Por tanto si pones como primera línea del BAT en cuestión algo como:

Echo Valores de los parametros: %*

sacará por pantalla los valores de todos los parámetros de invocación, separados por espacios.

Si prefieres individualizarlos puedes usar:

echo Valores de los parametros: %1/%2/%3/%4/%5/%6/%7/%8/%9

y aparecerán separados por "/". Si hay dos "/" seguidas es que ese parámetro no se ha rellenado.

Hola!

Has entendido bien. Pero el bat no existe. Es una aplicación de softphone que cuando entra una llamada ejecuta el comando cmdCallStart que abre una aplicación que "yo cree" para integración con mi base de datos.

Una vez que sepa, que me envía el programa en el caller id, lo tengo que recoger y enviarlo una url para que se añada a la base de datos.

no sé si me explico bien.

gracias

Hola de nuevo,

he creado un "prueba.bat" 

@echo off
Echo Valores de los parametros: %*

pero me sale en blanco, no sé si será posible finalmente.

gracias

El comando cmdCallStart ¿es entonces algo a sustituir por el BAT que tú hayas creado? Si es así, ¿Lo has sustituido por el PRUEBA.BAT de tu segunda respuesta y cuando se produce el evento se lanza el BAT pero no sale nada?

Si se lanza el BAT tendrá que salir, al menos, la parte literal del ECHO. ¿Es así?

Con lo que me has dicho he buscado en la red y parece que el programa que usas utiliza un INI (concretamente MICROSIP.INI) que es donde figura la descripción que indicabas. Normalmente en los INI se utiliza una "sintaxis" tipo Opcion=<valor> con lo que, en este caso concreto, habría que indicar algo como:

cmdCallStart=prueba.bat

¿Es así como estás trabajando?

Efectivamente,

en el microsip.ini edito la línea

cmdcallStar= C:\Users\%user%\Desktop\microsip\prueba.bat

Entonces cuando inicio una llamada se ejecuta el bat y muestra "

Valores de los parametros:

pero sin parámetros

En teoría debería mandar el caller id en una variable .

he probado:

cmdcallStar= C:\Users\%user%\Desktop\microsip\prueba.bat

cmdcallStar= C:\Users\%user%\Desktop\microsip\prueba.bat %callerid

cmdcallStar= C:\Users\%user%\Desktop\microsip\prueba.bat %callerid%

cmdcallStar= C:\Users\%user%\Desktop\microsip\prueba.bat $callerid

cmdcallStar= C:\Users\%user%\Desktop\microsip\prueba.bat  <callerid>

cmdcallStar= C:\Users\%user%\Desktop\microsip\prueba.bat  <%callerid%>

de la única manera que ejecuta el bat es la primera, el resto no funciona.

Gracias por el esfuerzo

Pues realmente ya no se me ocurre nada más. Habría que ver algún ejemplo de uso de ese programa con actuaciones posteriores que supongan que el "caller ID" se ha "rellenado". No creo que se guarde en una variable de entorno pero por si acaso añádele al BAT una línea que diga SET. Quedaría algo así:

@echo off
Echo Valores de los parametros: %*
set

Revisa lo que sale a ver si hay algo que "huela" a "caller ID"

He realizado la prueba y sale toda la descripción del pc, pero nada relacionado a caller id.

no tengo ningún ejemplo y me he puesto en contacto por email con el desarrollador, pero no me han contestado después de 1 semana.

He visto que una empresa tiene hecho una aplicación en vbs y les he pedido que si me podían orientar, pero su respuesta ha sido negativa.

Me tendré que espera para ver si algún día me contestan, si lo hacen lo pondré aquí.

gracias por el esfuerzo.

un saludo

he encontrado esto en el código fuente que es C++, yo no tengo ni idea de programación, pero por si te da una pista

//--
        if (!accountSettings.cmdCallStart.IsEmpty()) {
            CString params = sipuri.user;
            MSIP::RunCmd(accountSettings.cmdCallStart, params);
        }
        //--
        if (!user_data->commands.IsEmpty()) {
            SetTimer((UINT_PTR)call_info->id, 1000, (TIMERPROC)DTMFQueueTimerHandler);
        }
    }
    if (!accountSettings.singleMode) {
        if (call_info->state != PJSIP_INV_STATE_CONFIRMED) {
            if (call_info->state != PJSIP_INV_STATE_DISCONNECTED) {
                UpdateWindowText(*str, call_info->role == PJSIP_ROLE_UAS ? IDI_CALL_IN : IDI_CALL_OUT);
            }
        }
    }

gracias de nuevo

Por lo poco que sé, yo diría que la instrucción RunCmd ejecuta lo que se haya anotado en el apartado cmdCallStart de la cuenta (que es razonable pensar que sea el valor contenido en el correspondiente de MICROSIP.INI) aportando los parámetros recogidos en SIPURI. USER, que, por el nombre suena a URI/URL. Pero no explica que si lo ejecutado por el RunCmd es el BAT que hemos preparado no haya forma de presentar el valor de los parámetros.

Lo que dices de la empresa que tiene algo hecho en VBS imagino que es también para cmdCallStart pero no tendrás ese código, ¿verdad? No es que tenga mucha idea de VBS pero sí que vendría bien ver si los parámetros se pasan como uno esperaría, es decir en la línea de llamada separados por espacios y precedidos o no de un identificador.

Una última prueba que se me ocurre, con pocas posibilidades, es poner "ECHO" como valor del cmdCallStart, tal vez entrecomillado o sin comillas. Si sale una línea en blanco no habrá aportado nada aunque en ese caso sería interesante añadir algo para que se vea que tiene que ver con ello, por ejemplo "ECHO Probando, probando..."
Pero me temo que ya no voy a poder aportarte nada más. Suerte en tus gestiones y que alguien con más conocimiento te eche una mano.

Gracias por tu ayuda, finalmente no me salió nada en el programa.

esperare a que me conteste el desarrollador y si no cambiare de software.

un saludo

Suerte y saludos,

1 respuesta más de otro experto

Respuesta
1

cmdcallStar= C:\Users\%user%\Desktop\microsip\test.bat

And you put the variable is %1 on your requeste input on the bat file not in microsip.ini

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas