Principio de denominación del método.
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 | sí | Objeto con contenido de error |
código | número | sí | Código de error no único (ver sección) |
mensaje | cuerda | sí | Mensaje de error |
datos | objeto | sí | Objeto con detalles de error |
mnemotécnico | cuerda | sí | 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 "." |
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 |
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:
- Filtro simple;
- 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 | sí | |
!= | No es igual | sí | 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 | sí | cuerda |
regexp | Posix | sí | cuerda |
jsquery | PostgreSQL jsquery | sí | objeto, matriz |
en | Matriz de valores en relación con "o" | sí | 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 | sí | 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 | sí | Método llamado | |
jsonrpc | cuerda | sí | 2.0 | Número de especificación JSON-RPC |
params | objeto | sí | 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
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.
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
En la segunda parte del artículo, proporcionaré una selección de complementos y módulos de terceros implementados en la API de 3CX.