Menú

Principio de denominación del método.

Cultivos de frutas y bayas para el jardín.

Se aceptan las siguientes convenciones al utilizar la API de datos:

  • Los campos vacíos siempre se devuelven en una respuesta nula. En el caso de una matriz, se devuelve una matriz vacía, en el caso de un objeto, se devuelve un objeto vacío;
  • Todos los campos relacionados con la fecha y la hora se transmiten en el formato AAAA-MM-DD hh: mm: ss;
  • Las solicitudes de API siempre se realizan mediante el método POST;
  • Todos los parámetros en las solicitudes / respuestas, así como en las estructuras de datos en formato JSON y los nombres de los métodos se nombran en el estilo Snake Case, separando las palabras mediante guiones bajos;
  • Los datos se devuelven solo en formato JSON según la especificación RFC 7159. Se ignora el encabezado de aceptación;
  • Codificación de datos UTF-8;
  • El encabezado Content-Type debe ser "application / json; charset = UTF-8";
  • El encabezado Content-Length debe contener la longitud correcta del mensaje, siguiendo la especificación HTTP / 1.1

Agregar una dirección IP a la lista de permitidos

De forma predeterminada, el acceso a la API está denegado a todos, para que pueda realizar solicitudes, debe agregar la dirección IP del host desde el cual se realiza la solicitud a la lista blanca. Esto se puede hacer a través de su cuenta personal "Administrador -> Cuenta -> Reglas y configuración de seguridad", pestaña "API".

Si necesita permitir el acceso a todas las direcciones IP, debe agregar 0.0.0.0/0 a la lista de direcciones IP permitidas.

Si la solicitud se realiza desde debajo del agente, su dirección IP debe agregarse a la lista blanca de la cuenta del cliente.

Autenticación y usuarios de API

Los usuarios y las claves de acceso están sujetos a derechos de acceso similares a los de la cuenta personal.

Acceso clave

Las claves se generan a nivel de usuario en la sección "Cuenta" → "Gestión de usuarios"
Hay dos tipos de claves:

  • Constante;
  • Temporal;

Una clave permanente tiene una duración ilimitada.
Una clave temporal tiene una fecha de vencimiento específica para la clave.

Acceso de inicio de sesión y contraseña

Se utiliza la autenticación de sesión

La duración de la sesión es de 1 hora.

Informe de solicitudes de API

En su cuenta personal "Informes" -> "Servicio" -> "Solicitudes de API" puede crear un informe sobre las solicitudes de API

URL base para el acceso a la API

La URL base para acceder a la API sigue el siguiente patrón:

:// /

https: //dataapi.site/

Control de versiones

API de datos actual 2.0

La API de datos admite el control de versiones. La versión se especifica en la URL base como vX.Y, donde X es el número de versión principal, Y es el número de versión secundaria

Si se lanzó una nueva versión, entonces la anterior se considera obsoleta y, en consecuencia, al acceder a la versión anterior de la API, el parámetro "current_version_deprecated" con el valor "true" se devolverá en los metaparámetros (ver la sección )

El número máximo de versiones admitidas es 2
Período de soporte de la versión desactualizada 2 meses

Límites y restricciones

Los puntos se deducen solo por solicitudes exitosas, es decir, en el informe sobre solicitudes de API (ver sección) está marcado como exitoso.

La información sobre los límites se devuelve en todas las respuestas en metaparámetros (ver sección), excepto en los casos en que los límites no se tienen en cuenta;

Los límites se basan en un sistema de puntos, es decir, cada método tiene su propio peso. La llamada al método disminuye los puntos diarios / minutos disponibles por el tamaño del peso del método llamado

Información sobre límites en metaparámetros:

Métodos y su costo en puntos

Expansión de límites

En la página "Cuenta" -> "Tarifas y opciones" de su cuenta personal, puede ampliar los límites.

Procesamiento de errores

Opciones de mensaje de error

Nombre Un tipo Requerido Descripción
error objeto Objeto con contenido de error
código número Código de error no único (ver sección)
mensaje cuerda Mensaje de error
datos objeto Objeto con detalles de error
mnemotécnico cuerda Código de error textual único. Se recomienda utilizar este parámetro al manejar errores.
valor cuerda No Contiene lo que el usuario envió sin cambios
En algunos casos, puede estar ausente. Por ejemplo, un parámetro obligatorio no se completó en absoluto.
Extended_helper cuerda No Enlace a una descripción más detallada del error y posibles soluciones
params objeto No Mapa de sustitución de parámetros para plantilla con texto de error. Aquellos. contiene valores que cambian dinámicamente, por ejemplo, límites. Los valores especificados en este parámetro se pueden utilizar en mensajes de error en la interfaz, que se basa en la API de datos.
campo cuerda No El nombre del parámetro con el que está asociado el error.
Los parámetros anidados se muestran separados por un punto "."
Por ejemplo: "employee.phone_number"

Estructura JSON del error

("jsonrpc": "2.0", "id": nulo, "error": ("código": "número", "mensaje": "cadena", "datos": ("mnemónico": "cadena", " campo ":" cadena "," valor ":" cadena "," params ": (" objeto ":" cadena ")," Extended_helper ":" cadena "," metadatos ": ())))

Grupos de códigos de error

Código de error Descripción
-32700 Errores de validación de JSON
-32600
-32601 Errores relacionados con el método
-32602 Errores relacionados con la validación de parámetros en el método llamado
-32603 Errores internos del servidor JSON RPC
-32001 Errores de autenticación y errores de clave
-32003 Errores con derechos de acceso: la dirección IP no está en la lista blanca, el usuario no tiene derechos
-32004 Errores asociados con la secuencia incorrecta de métodos llamados
-32007 Errores asociados con el número virtual
-32008 Errores de componentes
-32009 Errores de cuenta
-32029 Limitar errores
-32099 Errores relacionados con el soporte de varias partes de la especificación JSON RPC 2.0: operaciones masivas, notificaciones

Lista de errores comunes a todos los métodos

Mensaje de texto El código Mnemotécnica Descripción
Solicitud no válida El JSON enviado no es un objeto de solicitud válido -32600 Solicitud no válida Errores relacionados con la validación de los parámetros de la solicitud: id, jsonrpc
El token de acceso ha caducado -32001 access_token_expired Se aplica solo al token constante. Si la vida útil del token constante ha expirado, se devuelve el error especificado.
El token de acceso ha sido bloqueado -32001 access_token_blocked Si el token constante está bloqueado, se devuelve el error especificado
El token de acceso no es válido -32001 access_token_invalid El error especificado se devuelve si no se encuentra el token permanente / temporal.
Se superó el límite por (tipo_limite). El valor del límite actual por (limit_type) es (limit_max_value) -32029 límite excedido Límite excedido
Necesita al menos uno de los siguientes componentes para acceder a este método: (componentes) -32008 method_component_disabled Si el componente que se requiere para que el método funcione no está conectado
Necesita al menos uno de los siguientes componentes para acceder a este parámetro: (componentes) -32008 parameter_component_disabled Si el componente no está conectado, que es necesario para completar el parámetro y crear la entidad
Su IP (ip) no está incluida en la lista blanca -32003 ip_not_whitelisted La dirección IP desde la que se realiza la solicitud no está en la lista blanca de direcciones. Si la solicitud se realiza desde debajo del agente, entonces su dirección IP debe estar en las listas de direcciones permitidas dentro de la cuenta del cliente.
El inicio de sesión o la contraseña son incorrectos -32001 auth_error Usuario o contraseña incorrecta
Su cuenta ha sido deshabilitada, comuníquese con el servicio de soporte -32009 cuenta inactiva la cuenta está bloqueada
Error interno, contacta con el servicio de soporte -32603 error interno Error interno, debe ponerse en contacto con el soporte técnico
Los datos proporcionados son de tipo incorrecto -32602 error_tipo_datos Por ejemplo, si esperamos string y pasamos int
El método no existe / no está disponible -32601 método_no_encontrado No se encontró el método llamado
Permiso denegado -32003 prohibido No tiene permiso para acceder al método o API, o está prohibido realizar cualquier acción
El servidor recibió JSON no válido. -32700 error de análisis Error de validación de JSON
No se admiten operaciones por lotes -32099 batch_opreations_not_supported No se admiten operaciones masivas
Notificaciones no admitidas -32099 Notifications_not_supported El parámetro id se perdió en la solicitud. Mira la sección
Se perdió el parámetro requerido -32602 required_parameter_missed No se pasó el parámetro obligatorio
Valor de parámetro no válido -32602 valor_parámetro_valido Se devuelve en todos los casos si se pasó un valor de parámetro incorrecto o si el valor pasado no corresponde al formato de entrada requerido
Parámetros inesperados del método -32602 parámetros_ inesperados Si se pasaron parámetros en "params" que no son proporcionados por la estructura JSON del método, o se especifica un parámetro para ordenar, filtrar y seleccionar que no existe
No se permite la combinación de parámetros -32602 combinación_de_parámetros_ inválidos Si los parámetros especificados en el método están en una combinación no válida o tienen dependencias entre sí. Debe consultar la documentación sobre el método y sus parámetros.
(mensaje de error) -32602 error Errores dinámicos

Lista de errores para métodos con get verb

Texto de error El código Mnemotécnica Descripción
Valor de parámetro no válido -32602 valor_parámetro_valido Si se pasó un valor incorrecto en los filtros para regexp, jsquery o cualquier valor que no coincida con la documentación
Está prohibido ordenar por parámetro -32602 sort_prohibited La clasificación por parámetro está prohibida e imposible, ya que el parámetro para la clasificación no está en la lista de permitidos para la clasificación.
Está prohibido filtrar por parámetro -32602 filter_prohibited Filtrar por parámetro está prohibido e imposible, ya que el parámetro para filtrar no está en la lista de permitidos para filtrar
El valor máximo del intervalo de fechas solicitado es de 3 meses -32602 date_interval_limit_reached Si en la solicitud el período entre las fechas especificadas en date_from y date_till es más de 3 meses. Básicamente, el error es relevante solo para los métodos de recepción de informes, pero no para todos.

Lista de errores comunes a los métodos con el verbo delete

Lista de errores comunes a los métodos con el verbo crear y actualizar, configurar, desarmar

Texto de error El código Mnemotécnica Descripción
Entidad no encontrada -32602 entidad_no_encontrada Si pasa un identificador único de una entidad que no se encontró
Entidad duplicada -32602 duplicate_entity Si la entidad ya existe
Se superó un nuevo límite de datos -32602 data_limit_exceeded Se produce un error si se alcanza la cantidad máxima de datos.
No se permiten acciones para su plan de tarifas. Necesita ponerse en contacto con el servicio de soporte o cambiar la configuración de su plan de tarifas en su cuenta -32602 tarifas_restricciones Cualquier restricción del plan de tarifas.
Este valor ya lo utiliza otra entidad. -32602 ya en uso El valor del parámetro especificado ya está en uso en otra entidad. Por ejemplo, el número virtual ya se está utilizando en otra campaña publicitaria.

Operaciones grupales

Funcionalidad no admitida

Convención de nomenclatura de métodos

El nombre del método JSON-RPC consta de dos partes separadas por un punto: el verbo y el nombre del objeto.

El nombre del objeto se selecciona como un sustantivo plural para reflejar la entidad comercial, como los suscriptores.

El nombre del método debe comenzar con un verbo que refleje la esencia de la operación.

Verbos usados ​​en la nomenclatura de métodos

Verbo Descripción
crear Agrega una entidad.
obtener Devuelve una lista de datos ordenados y filtrados utilizando criterios de filtro y métodos de clasificación. Es posible aplicar un límite y paginación a la solicitud sobre la cantidad de datos recibidos (ver apartado). Utilizando los criterios de filtrado, también se puede obtener un registro por su identificador único (ver sección). En un metaparámetro especial, se devuelve el número total de registros (ver sección). Con un parámetro especial, puede especificar qué campos devolver en el mensaje de respuesta (consulte la sección).
actualizar Actualiza una entidad con un identificador específico.
Posibilidad de actualización parcial de parámetros
Cuando se actualizan las matrices, se actualiza toda la matriz, es decir, se eliminan todos los elementos que no se transfirieron.
Para anular un parámetro opcional, debe pasar null
Eliminar Elimina una entidad con un identificador específico.
agregar La relación de un objeto con otro.
permitir Conexión de objeto
desactivar Deshabilitar objeto
colocar Establecer una propiedad en otro objeto, por ejemplo, establecer una etiqueta para una llamada
desarmado Eliminar una propiedad de otro objeto, por ejemplo, eliminar una etiqueta de una llamada

Criterios de filtración

El filtrado de datos se aplica solo al verbo "obtener" (consulte la sección sobre el uso de la primitiva "filtro" opcional, que es un objeto y puede contener:

  1. Filtro simple;
  2. Un árbol de filtros que contiene filtros simples con condiciones.

Un filtro simple es un objeto que contiene las primitivas requeridas:

El árbol de filtros contiene "filtros" primitivos especiales, que pueden contener tanto filtros simples como un árbol de filtros.

Posibles errores de filtrado

Ejemplo de estructura JSON de un filtro simple

Obtenemos una lista de registros para los que el campo "nombre" tiene el nombre "Bob"

("jsonrpc": "2.0", "id": 1, "método": "get.entity", "params" :( "filtro" :( "campo": "nombre", "operador": "=" , "valor": "Bob")))

Ejemplo de estructura JSON de un árbol de filtros con un nivel de anidamiento

Obtenemos una lista de registros en los que el campo "nombre" tiene el nombre "Bob" y su antigüedad es de 25 años.

("jsonrpc": "2.0", "id": 1, "método": "get.entity", "params" :( "filtro" :( "filtros": [("campo": "nombre", " operador ":" = "," valor ":" Bob "), (" campo ":" edad "," operador ":" = "," valor ": 25)]," condición ":" y ")) )

Ejemplo de estructura JSON de un árbol de filtros de doble anidamiento

Obtenemos una lista de registros en la que el campo "nombre" tiene el nombre "Bob" y su edad es de 25 años o una lista de registros en la que el campo "nombre" tiene el nombre "Dexter" y su edad es de 2 años

("jsonrpc": "2.0", "id": 1, "método": "get.entity", "params" :( "filtro" :( "filtros": [("filtros": [("campo" : "nombre", "operador": "=", "valor": "Bob"), ("campo": "edad", "operador": "=", "valor": 25)], "condición" : "y"), ("filtros": [("campo": "nombre", "operador": "=", "valor": "Dexter"), ("campo": "edad", "operador" : "=", "valor": 2)], "condición": "y")], "condición": "o")))

Ejemplo de estructura JSON de un árbol de filtros con triple nivel de anidamiento

Condición de consulta ((addv_comp_id = 10 o addv_comp_id = 12) y (tag_id = 1 o tag_id = 5)) o visit_id = 14 o (date_from = 2015-12-14 y date_till = 2015-12-16)

("filtro" :( "filtros": [("filtros": [("filtros": [("campo": "addv_comp_id", "operador": "=", "valor": 10), ("campo ":" addv_comp_id "," operador ":" = "," valor ": 12)]," condición ":" o "), (" filtros ": [(" campo ":" tag_id "," operador ": "=", "valor": 1), ("campo": "tag_id", "operador": "=", "valor": 5)], "condición": "o")], "condición": "y"), ("campo": "id_ visitante", "valor": 14, "operador": "="), ("filtros": [("campo": "fecha_desde", "valor": "2015 -12-14 12:00:00 "," operador ":" = "), (" campo ":" fecha_hasta "," valor ":" 2015-12-16 15:00:00 "," operador ": "=")], "condición": "y")], "condición": "o"))

Operadores de filtrado

El filtrado de nulos y no nulos será = nulo,! = Nulo

Operador Descripción Cadenas que distinguen entre mayúsculas y minúsculas Tipo de datos
= Es igual a
!= No es igual número, cadena, nulo, booleano, iso8601, enumeración
< Menos que - número, iso8601
> Más que - número, iso8601
<= Menor o igual - número, iso8601
>= Mas o igual - número, iso8601
me gusta Empieza por, termina por, contiene cuerda
regexp Posix cuerda
jsquery PostgreSQL jsquery objeto, matriz
en Matriz de valores en relación con "o" número, cadena, enumeración

Clasificación de datos

La clasificación de datos se aplica solo al verbo "obtener" (ver sección) usando una matriz de objetos de clasificación con las siguientes primitivas:

  • campo - el campo por el cual se realiza la clasificación;
  • orden - direcciones de clasificación. Los valores posibles son "asc" / "desc". "asc" - ascendente, "desc" - descendente. El parámetro es opcional. El valor predeterminado es "asc".

La lista de campos mediante los cuales se puede realizar la clasificación se determina individualmente para cada método.

Posibles errores de clasificación

Estructura JSON:

("jsonrpc": "2.0", "id": "número", "método": "cadena", "params" :( "ordenar": [("campo": "cadena", "orden": "cadena ")]))

Salida paginada

La paginación se puede aplicar al verbo "obtener" (ver sección). Los siguientes parámetros se utilizan para realizar la paginación de datos:

Estructura JSON:

("jsonrpc": "2.0", "id": "número", "método": "cadena", "params" :( "desplazamiento": "número", "límite": "número"))

Metaparámetros

Devuelto cuando se usa el verbo "get" (ver sección).

Presente tanto en respuestas de error como exitosas

El parámetro "api_version" se devuelve solo para las versiones obsoletas.

Estructura JSON:

("metadata" :( "api_version" :( "current_version_deprecated": "boolean", "current_version": "string", "latest_version": "string"), "limits" :( "day_limit": "número", " day_remaining ":" número "," day_reset ":" número "," minute_limit ":" número "," minute_remaining ":" número "," minute_reset ":" número ")," total_items ":" número "))

Presentación de datos devueltos

Lista separada de columnas devueltas

El verbo "obtener" de recepción de datos (ver sección) puede contener "campos" primitivos opcionales especiales del tipo de matriz, que puede contener una lista de campos que se mostrarán en la salida. Si no se utiliza la primitiva "campos", la salida muestra todos los campos predeterminados para el método llamado.

La lista de campos es individual para cada método.

Estructura JSON:

("jsonrpc": "2.0", "id": "número", "método": "cadena", "params" :( "campos": ["cadena"]))

Posibles errores en la presentación de los datos devueltos

Campos comunes para todos los métodos

Nombre Un tipo Requerido Valores válidos Descripción
identificación cadena o número Un identificador único para la solicitud de API que se utiliza para asociar una solicitud con una respuesta. Se recomienda hacerlo en forma de hash único o de número aleatorio.
método cuerda Método llamado
jsonrpc cuerda 2.0 Número de especificación JSON-RPC
params objeto Contiene el cuerpo de la solicitud de API. Dependiendo del método que se llame, el cuerpo de la solicitud cambia.

Autenticación

Entrada

Solicitar parámetros

Opciones de respuesta

La duración de la clave de sesión de autenticación recibida después de llamar al método "login.user" es de 1 hora. Cuando caduca la clave de sesión, se debe volver a solicitar, es decir, llamar al método "login.user".

Para realizar solicitudes de API, es posible utilizar una clave de autenticación permanente, que está disponible en la Cuenta Personal a nivel de usuario.

Estructura de solicitud JSON

("jsonrpc": "2.0", "id": "número", "método": "login.user", "params" :( "login": "cadena", "contraseña": "cadena"))

Estoy usando el código InApp V3 para compras dentro de la aplicación en mi aplicación, obtengo este error BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE y valor de error: 3 cuando la cuenta de Google no está disponible en el dispositivo. Quiero saber si hay otras posibilidades de obtener este error porque cuando obtengo este error necesito mostrar una ventana emergente al usuario con algunos datos. Si esto se debe a la inaccesibilidad de la cuenta de Google en el dispositivo, mostraré un cuadro de diálogo con el texto correspondiente. Este es el código que estoy usando

MHelper.startSetup (new IabHelper.OnIabSetupFinishedListener () (public void onIabSetupFinished (resultado de IabResult) (if (! Result.isSuccess ()) (// error aquí return;))));

Este error es Error al comprobar la compatibilidad con la facturación v3. (respuesta: 3: Facturación no disponible) Error al comprobar la compatibilidad con la facturación v3. (respuesta: 3: Facturación no disponible)

Como podemos ver directamente en el código de configuración de IabHElper de la muestra proporcionada por google, el error significa:

"El servicio de facturación no está disponible en el dispositivo".

La versión de la API de facturación no es compatible con el tipo solicitado

Esta es la referencia de facturación en la aplicación (IAB versión 3), por lo que el error significa que IAB v3 no está instalado en el dispositivo.

Esto significa efectivamente que el usuario tiene una cuenta de Google y posiblemente también un servicio de facturación en la aplicación, pero no tiene la última versión. Esto sucede en dispositivos más antiguos, y cuando el usuario nunca actualiza nada, se usa para dispositivos en los que puede ver la aplicación Market anterior en lugar de la aplicación Play.

Entonces el error que tienes que mostrarle al usuario y la prueba que tienes que hacer no es si el dispositivo tiene una cuenta de google, sino si tiene los servicios de google play instalados y correctamente actualizados.

ACTUALIZAR:

Si está buscando código en todas las bibliotecas SDK y clases auxiliares proporcionadas por Google, este es el único lugar donde podemos encontrar exactamente lo que está llamando: IabHelper de la clase IabHelper

Intención serviceIntent = new Intent ("com.android.vending.billing.InAppBillingService.BIND"); if (! mContext.getPackageManager (). queryIntentServices (serviceIntent, 0) .isEmpty ()) (// servicio disponible para manejar ese Intent mContext.bindService (serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);) else (// no hay servicio disponible para manejar esa intención mServiceConn = null; if (listener! = null) (listener.onIabSetupFinished (new IabResult (BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE, "El servicio de facturación no está disponible en el dispositivo."));))

Esto significa que la aplicación no se puede conectar al servicio en el dispositivo, ya que el administrador de paquetes ni siquiera lo sabe . Ésta es la única opción que puede provocar este error. ¿Y qué significa que no se puede conectar al servicio? Esto significa uno de los siguientes:

  • El dispositivo no tiene un servicio instalado.
  • Tiene una versión antigua, ya que sabemos que las últimas versiones de Play Store utilizan IAB v3.

Por lo tanto, su error solo puede significar uno de estos, lo que significa para usted que debe mostrarle al usuario del mensaje, por ejemplo: "No tiene los servicios de Google Play instalados o necesita actualizarlos". Y no hay otra posibilidad de obtener este error.

Pero, si desea que sea más fácil para los usuarios, puede decirles que necesitan actualizar la aplicación Google Play a la última versión. Y hará que todo funcione a la perfección.

Este error también se acepta después de que el usuario elimina su cuenta de Google del dispositivo.

Básicamente, la posibilidad de su problema BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE es que en algunos países todavía no está permitido en la compra de aplicaciones como en Serbia y en muchos países.

Por lo tanto, cualquier usuario de un país donde Google Play no admite la compra de la aplicación recibirá BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE.

Esto será menos probable que el usuario no tenga el servicio Google Play instalado en el teléfono actualizado, así que no se preocupe por ese caso.

Prueba estos trucos

Elimine el caché, los datos y las actualizaciones de la aplicación de reproducción, inicie la aplicación de reproducción nuevamente, ¡debería funcionar! O pruebe con las últimas actualizaciones (si se corrigió)

FYI:

Solo ten en cuenta:

    IABv3 está integrado en Google Play Services, por lo que se requiere una actualización para actualizar App Play.

    V2 se ha integrado en el cliente de Play Store. El problema de la caché / EULA no está relacionado específicamente con la IAB, tiene que ver con la configuración de Play Services (y con suerte para la mayoría de los usuarios esto es opcional, de todos modos parte de la caché).

    Durante este período de transición, cuando Play Services necesita actualizarse, el sistema debe actualizarse para que la aplicación lo use, pero creo que la mayoría de la gente estaría de acuerdo en que esto es mejor que esperar una actualización del sistema operativo ".

Ver este informe: informe de error, mensaje de Google+

Si no ha autenticado su dispositivo con su cuenta de Google, es posible que obtenga este error.

Para aquellos que todavía enfrentan este problema, en la mayoría de los casos, el iab no es compatible en su país, como dijo Williams. Puede usar una VPN para que funcione.

Si un PBX normal ya no es bueno para usted, entonces la palabra INTEGRACIÓN aparece en el léxico. Para muchos, esta palabra está asociada a procesos complejos, largo desarrollo y altos presupuestos. La INTEGRACIÓN suele ser seguida por la API, el mismo conjunto de procedimientos y medios por los que nuestra IP PBX se conecta a alguna aplicación de terceros.


El significado de INTEGRACIÓN casi siempre se reduce a transferir desde la IP PBX a la aplicación (generalmente algún tipo de CRM) del número cuando se realiza una llamada (bueno, el hecho de la llamada en sí, por supuesto) y transferir el mismo número desde la aplicación a la centralita IP cuando salga. Además, la propia aplicación decide qué hacer con este número:

  • Abrir tarjeta encontrada por número
  • Hacer una entrada en el registro
  • enviar un mensaje
  • Etc.

Con menos frecuencia, INTEGRACIÓN implica la incorporación de una funcionalidad más amplia:

  • Gestión del estado de la línea del operador
  • Trabajando con sus propias llamadas
  • Lidiar con las llamadas de los compañeros
  • Trabajando con conferencias
  • Trabajar con la guía telefónica
  • Etc.

Aquí, de hecho, estamos transfiriendo nuestra funcionalidad de softphone CRM.

¿Qué son las API de 3CX?

API HTTP

Con su ayuda puedes:

  • Hacer una llamada desde un suscriptor de 3CX (a un número interno o externo)
  • Desconectar suscriptor
  • Habilitar suscriptor
  • Deshabilitar las llamadas externas de los suscriptores
  • Habilitar llamadas externas al suscriptor
  • Habilitar la grabación de conversaciones para el suscriptor
  • Deshabilitar la grabación de llamadas para el suscriptor

Todo funciona de manera bastante simple, por ejemplo, para hacer una llamada, escribimos la siguiente línea en el navegador
DIRECCIÓN-IP -3CX: 5000 / ivr / PbxAPI.aspx? Func = make_call & from = número-llamando-desde & to = llamando-donde & pin = contraseña

Primero, la llamada llegará al iniciador, la pondrá en espera, luego 3CX marcará el número remoto y combinará las llamadas.

La descripción completa de las variables está aquí: http://www.3cx.com/blog/docs/3cx-http-api/
Puede usarlo en cualquier CRM basado en navegador. Contras: interacción solo con la central telefónica automática. Es imposible enviar una notificación al cliente sobre una llamada entrante de esta manera.

API de CRM

Con su ayuda puedes:

  • Realizar llamadas desde una aplicación de terceros
  • Notificaciones de cambio de estado de llamada (conexión establecida, desconectada, marcando, marcando, etc.)
  • Notificaciones de estado del suscriptor (conectado, desconectado, sin conexión a PBX)

La API de CRM es esencialmente un módulo para el softphone nativo - 3CX Phone para Windows. Para desarrollar un complemento, debe dominar Microsoft Visual Studio. Se crea una biblioteca DLL, que se escribe en el archivo de configuración del softphone.

Puedes usarlo en cualquier lugar. Debe recordarse que esta API requiere un softphone, que es a la vez una ventaja: se hace cargo de la interacción cliente-servidor, y una desventaja: de todos modos, se necesita un softphone.

API DE CONTROL DE LLAMADAS

La API de control de llamadas está disponible para la Central Telefónica 3CX versión 11 y superior y le permite controlar las llamadas mediante programación. El desarrollo requiere experiencia con .NET y C #.


Con su ayuda puedes:
  • Ver todas las llamadas activas en PBX
  • Intercepción de control de llamadas
  • Transferencia de llamada
  • Colgar
  • Cambio de la configuración de la Central Telefónica 3CX
  • Y unas 30 funciones más diferentes
El uso de esta API asume la aplicación en grandes proyectos. La principal diferencia con otras API es que la interacción va directamente con el PBX (con el lado del servidor) y no con el cliente.
La descripción de los comandos con ejemplos está aquí: http://www.3cx.com/blog/docs/call-control-api/

Integraciones de CRM disponibles "listas para usar"

Todas las integraciones listas para usar se realizan como complementos para 3CX Phone.
  • Clic para llamar: la capacidad de marcar un número con un clic desde el CRM.
  • Ventana emergente de llamada: visualización automática de una tarjeta de contacto basada en el identificador de llamadas.
  • Diarios de llamadas: mantenimiento del historial de llamadas en CRM.
Las acciones del lado de CRM están configuradas en 3CXPhone.
La integración con Microsoft Outlook y Microsoft Office 365 está disponible para cualquier versión comercial de la licencia comercial de Central Telefónica 3CX. Otros complementos requieren la versión PRO de la Central Telefónica CRM 3CX. Cabe señalar que la cantidad de usuarios de estos complementos no tiene licencia de ninguna manera.

Además de Outlook y Office ya mencionados, se admiten los siguientes CRM:

  • Microsoft Dynamics
  • Contactos de Google
  • Fuerza de ventas
  • SugarCRM
  • Sage CRM
Cada plugin se instala desde un kit de distribución general y consta de 2 partes, la primera es 3CXPlugin para el teléfono móvil y la segunda es un paquete de personalización para el sistema CRM y un pequeño manual de cómo instalarlo, para que aparezca el botón necesario en la interfaz - LLAME.

En la segunda parte del artículo, proporcionaré una selección de complementos y módulos de terceros implementados en la API de 3CX.