Meniul

Principiul denumirii metodei.

Culturi de fructe și fructe de pădure pentru grădină

Următoarele convenții sunt acceptate când se utilizează Data API:

  • Câmpurile goale sunt întotdeauna returnate într-un răspuns nul. In cazul unui tablou se returneaza un tablou gol, in cazul unui obiect se returneaza un obiect gol;
  • Toate câmpurile legate de dată și oră sunt transmise în formatul AAAA-LL-ZZ hh: mm: ss;
  • Solicitările API sunt întotdeauna făcute folosind metoda POST;
  • Toți parametrii din cereri/răspunsuri, precum și din structurile de date în format JSON și numele metodelor sunt denumiți în stilul Snake Case - separarea cuvintelor prin litere de subliniere;
  • Datele sunt returnate numai în format JSON conform specificației RFC 7159. Antetul Accept este ignorat;
  • Codificarea datelor UTF-8;
  • Antetul Content-Type trebuie să fie „application / json; charset = UTF-8”;
  • Antetul Content-Length trebuie să conțină lungimea corectă a mesajului, urmând specificația HTTP / 1.1

Adăugați o adresă IP la lista permisă

În mod implicit, accesul la API este interzis tuturor, astfel încât să puteți face solicitări, trebuie să adăugați în lista albă adresa IP a gazdei de la care se face solicitarea. Acest lucru se poate face prin contul personal „Administrator -> Cont -> Reguli și setări de securitate”, fila „API”.

Dacă trebuie să permiteți accesul la toate adresele IP, atunci trebuie să adăugați 0.0.0.0/0 la lista de permise.

Dacă cererea este făcută de sub agent, atunci adresa IP a acestuia trebuie adăugată la lista albă a contului client

Utilizatori API și autentificare

Utilizatorii și cheile de acces sunt supuse unor drepturi de acces similare cu cele din contul personal.

Acces cu cheie

Cheile sunt generate la nivel de utilizator în secțiunea „Cont” → „Gestionarea utilizatorilor”
Există două tipuri de chei:

  • Constant;
  • Temporar;

O cheie permanentă are o durată nelimitată.
O cheie temporară are o anumită dată de expirare pentru cheie.

Autentificare și acces prin parolă

Se folosește autentificarea sesiunii

Durata de viață a sesiunii este de 1 oră.

Raport de solicitări API

În contul dvs. personal „Rapoarte” -> „Serviciu” -> „Solicitări API” puteți crea un raport despre solicitările API

Adresa URL de bază pentru acces API

Adresa URL de bază pentru accesarea API-ului urmează următorul model:

:// /

https: //dataapi.site/

Versiune

Current Data API 2.0

Data API acceptă versiunea. Versiunea este specificată în adresa URL de bază ca vX.Y, unde X este numărul versiunii majore, Y este numărul versiunii minore

Dacă a fost lansată o versiune nouă, atunci cea veche este considerată învechită și, în consecință, la accesarea versiunii veche a API-ului, parametrul „current_version_deprecated” cu valoarea „true” va fi returnat în meta-parametri (vezi secțiunea )

Numărul maxim de versiuni acceptate este 2
Perioada de suport pentru versiunea învechită 2 luni

Limite și restricții

Punctele sunt deduse numai pentru solicitările reușite, adică în raportul privind solicitările API (vezi secțiunea) sunt marcate ca reușite.

Informațiile despre limite sunt returnate în toate răspunsurile în meta-parametri (vezi secțiunea), cu excepția cazurilor în care limitele nu sunt luate în considerare;

Limitele se bazează pe un sistem de puncte, adică fiecare metodă are propria sa greutate. Apelul metodei scade punctele zilnice/minute disponibile cu dimensiunea greutății metodei apelate

Informații despre limitele în meta-parametri:

Metode și costul acestora în puncte

Extinderea limitelor

Pe pagina „Cont” -> „Tarife și opțiuni” din contul personal, puteți extinde limitele.

Eroare la procesare

Opțiuni pentru mesaje de eroare

Nume Tip de Obligatoriu Descriere
eroare obiect da Obiect cu conținut de eroare
cod număr da Cod de eroare neunic (vezi secțiunea)
mesaj şir da Mesaj de eroare
date obiect da Obiect cu detalii despre eroare
mnemonic şir da Cod de eroare textual unic. Este recomandat să utilizați acest parametru la tratarea erorilor.
valoare şir Nu Conține neschimbat ceea ce a trimis utilizatorul
În unele cazuri, poate fi absent. De exemplu, un parametru necesar nu a fost completat deloc.
extins_helper şir Nu Link către o descriere mai detaliată a erorii și soluțiile posibile
parametrii obiect Nu Hartă de înlocuire a parametrilor pentru șablon cu text de eroare. Acestea. conține valori care se schimbă dinamic, de exemplu, limite. Valorile specificate în acest parametru pot fi utilizate în mesajele de eroare din interfață, care se bazează pe API-ul de date.
camp şir Nu Numele parametrului cu care este asociată eroarea
Parametrii imbricați sunt afișați separați de un punct „.”
De exemplu: „employee.phone_number”

Structura JSON a erorii

("jsonrpc": "2.0", "id": nul, "eroare": ("cod": "număr", "mesaj": "șir", "date": ("mnemonic": "șir", " câmp ":" șir "," valoare ":" șir "," parametri ": (" obiect ":" șir ")," extended_helper ":" șir "," metadate ": ())))

Grupuri de coduri de eroare

Cod de eroare Descriere
-32700 Erori de validare JSON
-32600
-32601 Erori legate de metoda
-32602 Erori legate de validarea parametrilor în metoda apelată
-32603 Erori interne ale serverului JSON RPC
-32001 Erori de autentificare și erori de cheie
-32003 Erori cu drepturile de acces - adresa ip nu este în lista albă, utilizatorul nu are drepturi
-32004 Erori asociate cu secvența greșită a metodelor apelate
-32007 Erori asociate cu numărul virtual
-32008 Erori componente
-32009 Erori de cont
-32029 Limitați erorile
-32099 Erori legate de suportul diferitelor părți ale specificației JSON RPC 2.0 - Operațiuni în bloc, Notificări

Lista erorilor comune tuturor metodelor

Mesaj text Cod Mnemonice Descriere
Solicitare nevalidă JSON trimis nu este un obiect de solicitare valid -32600 cerere invalida Erori legate de validarea parametrilor cererii - id, jsonrpc
Indicatorul de acces a expirat -32001 access_token_expired Se aplică numai jetonului constant. Dacă durata de viață a simbolului constant a expirat, atunci eroarea specificată este returnată
Jetonul de acces a fost blocat -32001 access_token_blocked Dacă simbolul constant este blocat, atunci eroarea specificată este returnată
Indicatorul de acces este nevalid -32001 access_token_invalid Eroarea specificată este returnată dacă jetonul permanent/temporar nu este găsit
Limita per (limit_type) a fost depășită. Valoarea limitei curente pe (limit_type) este (limit_max_value) -32029 limită depășită Limită depășită
Aveți nevoie de cel puțin una dintre următoarele componente pentru a accesa această metodă: (componente) -32008 method_component_disabled Dacă componenta necesară pentru ca metoda să funcționeze nu este conectată
Aveți nevoie de cel puțin una dintre următoarele componente pentru a accesa acest parametru: (componente) -32008 parameter_component_disabled Dacă componenta nu este conectată, este necesar pentru a completa parametrul și a crea entitatea
IP-ul dvs. (ip) nu este inclus în lista albă -32003 ip_not_whitelisted Adresa IP de la care se face cererea nu se află în lista albă de adrese. Dacă solicitarea este făcută de sub agent, atunci adresa dumneavoastră IP trebuie să fie în listele de adrese permise din contul clientului
Autentificarea sau parola este greșită -32001 auth_error parolă sau logare incorectă
Contul dvs. a fost dezactivat, contactați serviciul de asistență -32009 cont inactiv contul este blocat
Eroare internă, contactați serviciul de asistență -32603 eroare internă Eroare internă, trebuie să contactați asistența tehnică
Datele furnizate sunt de tip greșit -32602 data_type_error De exemplu, dacă ne așteptăm la string și la transmis int
Metoda nu există/nu este disponibilă -32601 metoda_negăsită Metoda numită nu a fost găsită
Acces refuzat -32003 interzis Nu aveți permisiunea de a accesa metoda sau API-ul sau este interzis să efectuați orice acțiune
JSON nevalid a fost primit de către server. -32700 parse_error Eroare de validare JSON
Operațiuni în lot nu sunt acceptate -32099 batch_opreations_not_supported Operațiunile în bloc nu sunt acceptate
Notificările nu sunt acceptate -32099 notificări_nu_acceptate Parametrul id a fost pierdut în cerere. Vezi secțiunea
Parametrul necesar a fost omis -32602 parametru_obligatoriu ratat Parametrul necesar nu a fost trecut
Valoare nevalidă a parametrului -32602 valoare_parametrului_invalid Este returnat în toate cazurile dacă a fost transmisă o valoare incorectă a parametrului sau valoarea transmisă nu corespunde formatului de intrare necesar
Parametru(i) metodei neașteptate -32602 parametri_neaștepți Dacă parametrii au fost trecuți în „params” care nu sunt furnizați de structura JSON a metodei sau este specificat un parametru pentru sortare, filtrare și selectare care nu există
Combinația de parametri nu este permisă -32602 invalid_parameters_combination Dacă parametrii specificați în metodă sunt într-o combinație nevalidă sau au dependențe unul de celălalt. Trebuie să vă uitați la documentația despre metodă și parametrii acesteia.
(mesaj_eroare) -32602 eroare Erori dinamice

Lista de erori pentru metodele cu verbul get

Text de eroare Cod Mnemonice Descriere
Valoare nevalidă a parametrului -32602 valoare_parametrului_invalid Dacă a fost transmisă o valoare incorectă în filtrele pentru expresia regulă, jsquery sau orice valoare care nu se potrivește cu documentația
Sortarea după parametru este interzisă -32602 sort_interzis Sortarea după parametru este interzisă și imposibilă, deoarece parametrul de sortare nu se află în lista de permise pentru sortare
Filtrarea după parametru este interzisă -32602 filtru_interzis Filtrarea după parametru este interzisă și imposibilă, deoarece parametrul pentru filtrare nu se află în lista de permise pentru filtrare
Valoarea maximă a intervalului de date solicitat este de 3 luni -32602 date_interval_limit_reached Dacă în cerere perioada dintre datele specificate în date_from și date_till este mai mare de 3 luni. Practic, eroarea este relevantă doar pentru metodele de primire a rapoartelor, dar nu pentru toate.

Lista erorilor comune metodelor cu verbul șterge

Lista erorilor comune metodelor cu verbul create și update, set, unset

Text de eroare Cod Mnemonice Descriere
Entitatea nu a fost găsită -32602 entitate_ne_găsită Dacă se transmite un identificator unic al unei entități care nu a fost găsit
Entitate duplicat -32602 duplicate_entity Dacă entitatea există deja
O nouă limită de date a fost depășită -32602 data_limit_exceeded Apare o eroare dacă a fost atinsă cantitatea maximă de date.
Acțiunea nu este permisă pentru planul dvs. tarifar. Trebuie să contactați serviciul de asistență sau să modificați setările planului tarifar din contul dvs -32602 tarife_restrictions Orice restricții ale planului tarifar
Această valoare este deja utilizată de o altă entitate -32602 deja folosit Valoarea parametrului specificat este deja utilizată într-o altă entitate. De exemplu, numărul virtual este deja folosit într-o altă campanie de publicitate.

Operațiuni de grup

Funcționalitatea nu este acceptată

Convenția de denumire a metodei

Numele metodei JSON-RPC constă din două părți separate printr-o punct: verbul și numele obiectului.

Numele obiectului este selectat ca substantiv la plural pentru a reflecta entitatea comercială, cum ar fi abonații.

Numele metodei trebuie să înceapă cu un verb care reflectă esența operației.

Verbe folosite în denumirea metodei

Verb Descriere
crea Adaugă o entitate.
obține Returnează o listă de date sortate și filtrate folosind criterii de filtrare și metode de sortare. Este posibil să se aplice o limită și o paginare cererii privind cantitatea de date primite (vezi secțiunea). Folosind criteriile de filtrare, o înregistrare poate fi obținută și prin identificatorul său unic (vezi secțiunea). Într-un meta-parametru special, este returnat numărul total de înregistrări (vezi secțiunea). Folosind un parametru special, puteți specifica ce câmpuri să returnați în mesajul de răspuns (vezi secțiunea).
Actualizați Actualizează o entitate cu un anumit identificator.
Este posibilă actualizarea parțială a parametrilor
Când matricele sunt actualizate, întreaga matrice este actualizată, adică toate elementele care nu au fost transferate sunt șterse.
Pentru a anula un parametru opțional, trebuie să treceți null
șterge Elimină o entitate cu un anumit identificator.
adăuga Relația dintre un obiect și altul.
permite Conexiune obiect
dezactivați Dezactivați obiectul
a stabilit Setarea unei proprietăți la un alt obiect, de exemplu, setarea unei etichete pentru un apel
neasezat Eliminarea unei proprietăți dintr-un alt obiect, de exemplu, eliminarea unei etichete dintr-un apel

Criterii de filtrare

Filtrarea datelor se aplică numai verbului „get” (vezi secțiunea folosind primitiva opțională „filter”, care este un obiect și poate conține:

  1. Filtru simplu;
  2. Un arbore de filtre care conține filtre simple cu condiții.

Un filtru simplu este un obiect care conține primitivele necesare:

Arborele de filtrare conține „filtre” primitive speciale, care pot conține atât filtre simple, cât și un arbore de filtre.

Posibile erori de filtrare

Exemplu de structură JSON a unui filtru simplu

Obținem o listă de înregistrări pentru care câmpul „nume” are numele „Bob”

("jsonrpc": "2.0", "id": 1, "metoda": "get.entity", "params" :( "filtru" :( "câmp": "nume", "operator": "=" , „valoare”: „Bob”)))

Exemplu de structură JSON a unui arbore de filtru cu un nivel de imbricare

Primim o listă de înregistrări în care câmpul „nume” are numele „Bob” și vârsta acestuia este de 25 de ani

("jsonrpc": "2.0", "id": 1, "metoda": "get.entity", "params" :( "filtru" :( "filtre": [("câmp": "nume", " operator ":" = "," valoare ":" Bob "), (" câmp ":" vârstă "," operator ":" = "," valoare ": 25)]," condiție ":" și ")) )

Exemplu de structură JSON a unui arbore de filtru dublu imbricat

Obținem o listă de înregistrări în care câmpul „nume” are numele „Bob” și vârsta lui este de 25 de ani sau o listă de înregistrări în care câmpul „nume” are numele „Dexter” și vârsta lui este de 2 ani

("jsonrpc": "2.0", "id": 1, "metoda": "get.entity", "params" :( "filtru" :( "filtre": [("filtre": [("câmp") : „nume”, „operator”: „=", „valoare”: „Bob”), „câmp”: „vârstă”, „operator”: „=", „valoare”: 25)], „condiție” : "și"), ("filtre": [("câmp": "nume", "operator": "=", "valoare": "Dexter"), ("câmp": "vârstă", "operator" : „=", „valoare”: 2)], „condiție”: „și”)], „condiție”: „sau”)))

Exemplu de structură JSON a unui arbore de filtrare cu nivel de imbricare triplu

Condiție de interogare ((addv_comp_id = 10 sau addv_comp_id = 12) și (tag_id = 1 sau tag_id = 5)) sau visitor_id = 14 sau (date_from = 2015-12-14 și date_till = 2015-12-16)

("filtru" :( "filtre": [("filtre": [("filtre": [("câmp": "addv_comp_id", "operator": "=", "valoare": 10), ("câmp ":" addv_comp_id "," operator ":" = "," valoare ": 12)]," condiție ":" sau "), (" filtre ": [(" câmp ":" tag_id "," operator ": „=", „valoare”: 1), („câmp”: „id_etichetă”, „operator”: „=", „valoare”: 5)], „condiție”: „sau”)], „condiție”: „și”), („câmp”: „codul_vizitatorului”, „valoare”: 14, „operator”: „="), (“filtre”: [(„câmp”: „data_de la”, „valoare”: „2015 -12-14 12:00:00 "," operator ":" = "), (" câmp ":" date_till "," valoare ":" 2015-12-16 15:00:00 "," operator ": „=")], „condiție”: „și”)], „condiție”: „sau”))

Operatori de filtrare

Filtrarea null și nu null va fi = null,! = Null

Operator Descriere Șiruri sensibile la majuscule Tip de date
= Egal da
!= Nu este egal da număr, șir, nul, boolean, iso8601, enumerare
< Mai puțin decât - număr, iso8601
> Mai mult decât - număr, iso8601
<= Mai mic sau egal cu - număr, iso8601
>= Mai mult sau egal - număr, iso8601
ca Începe cu, se termină cu, conține da şir
expresie regulată Posix da şir
jsquery PostgreSQL jsquery da obiect, matrice
în Matrice de valori în raport cu „sau” da număr, șir, enumerare

Sortarea datelor

Sortarea datelor se aplică numai verbului „get” (vezi secțiunea) folosind o matrice de obiecte de sortare cu următoarele primitive:

  • câmp - câmpul prin care se realizează sortarea;
  • ordine - direcții de sortare. Valorile posibile sunt „asc” / „desc”. „asc” – ascendent, „desc” – descendent. Parametrul este optional. Valoarea implicită este „asc”.

Lista câmpurilor prin care poate fi efectuată sortarea este determinată individual pentru fiecare metodă.

Posibile erori de sortare

Structura JSON:

("jsonrpc": "2.0", "id": "număr", "metoda": "șir", "params" :( "sortare": [("câmp": "șir", "comandă": "șir ")]))

Ieșire paginată

Paginare poate fi aplicată verbului „get” (vezi secțiunea). Următorii parametri sunt utilizați pentru a efectua paginarea datelor:

Structura JSON:

("jsonrpc": "2.0", "id": "număr", "metoda": "șir", "params" :( "offset": "număr", "limită": "număr"))

Meta parametri

A revenit când se folosește verbul „obține” (vezi secțiunea).

Prezenți atât în ​​răspunsurile de eroare, cât și în cele de succes

Parametrul „api_version” este returnat numai pentru versiunile învechite.

Structura JSON:

("metadate" :( "versiunea_api" :( "versiunea_actuală_deprecată": "boolean", "versiunea_actuală": "șir", "ultima versiune": "șir"), "limite" :( "limită_zi": "număr", " day_remaining ":" număr "," day_reset ":" număr "," minute_limit ":" număr "," minute_remaining ":" număr "," minute_reset ":" număr ")," total_items ":" număr "))

Prezentarea datelor returnate

Listă separată de coloane returnate

Verbul de primire a datelor „obține” (vezi secțiunea) poate conține „câmpuri” primitive opționale speciale de tip matrice, care poate conține o listă de câmpuri care urmează să fie afișate în ieșire. Dacă primitiva „câmpuri” nu este utilizată, atunci rezultatul arată toate câmpurile implicite pentru metoda apelată.

Lista câmpurilor este individuală pentru fiecare metodă.

Structura JSON:

("jsonrpc": "2.0", "id": "număr", "metodă": "șir", "params" :( "câmpuri": ["șir"]))

Posibile erori în prezentarea datelor returnate

Câmpuri comune pentru toate metodele

Nume Tip de Obligatoriu Valori valide Descriere
id șir sau număr da Un identificator unic pentru cererea API care este utilizat pentru a asocia o solicitare cu un răspuns. Se recomandă să o faceți sub forma unui hash unic sau a unui număr aleatoriu.
metodă şir da Metoda numită
jsonrpc şir da 2.0 Numărul specificației JSON-RPC
parametrii obiect da Conține corpul solicitării API. În funcție de metoda apelată, corpul cererii se modifică.

Autentificare

Intrare

Solicitați parametri

Opțiuni de răspuns

Durata de viață a cheii de sesiune de autentificare primită după apelarea metodei „login.user” este de 1 oră. Când cheia de sesiune expiră, aceasta trebuie să fie din nou solicitată, adică. apelați metoda „login.user”.

Pentru a face solicitări API, este posibil să utilizați o cheie de autentificare permanentă, care este disponibilă în Contul personal la nivel de utilizator.

Structura cererii JSON

("jsonrpc": "2.0", "id": "număr", "method": "login.user", "params" :( "login": "șir", "parolă": "șir"))

Folosesc codul InApp V3 pentru achiziții în aplicație în aplicația mea, primesc această eroare BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE și valoare de eroare: 3 când contul Google nu este disponibil pe dispozitiv. Vreau să știu dacă există alte posibilități pentru a obține această eroare, deoarece atunci când primesc această eroare trebuie să arăt utilizatorului o fereastră pop-up cu câteva date. Dacă acest lucru se datorează inaccesibilității contului Google de pe dispozitiv, voi afișa un dialog cu textul corespunzător. Acesta este codul pe care îl folosesc

MHelper.startSetup (nou IabHelper.OnIabSetupFinishedListener () (public void onIabSetupFinished (rezultat IabResult) (dacă (! Result.isSuccess ()) (// eroare aici return;))));

Această eroare este Verificarea erorilor pentru suport pentru facturare v3. (răspuns: 3: Facturare indisponibilă) Eroare la verificarea suportului pentru facturare v3. (răspuns: 3: Facturare indisponibilă)

După cum putem vedea direct în codul de configurare IabHElper al eșantionului furnizat de google, eroarea înseamnă:

„Serviciul de facturare nu este disponibil pe dispozitiv.”

Versiunea API de facturare nu este acceptată pentru tipul solicitat

Aceasta este referința de facturare în aplicație (IAB versiunea 3), deci eroarea înseamnă că IAB v3 nu este instalat pe dispozitiv.

Acest lucru înseamnă efectiv că utilizatorul are un cont Google și, eventual, un serviciu de facturare în aplicație, dar nu are cea mai recentă versiune. Acest lucru se întâmplă pe dispozitivele mai vechi și, atunci când utilizatorul nu actualizează niciodată nimic, este folosit pentru dispozitivele în care puteți vedea vechea aplicație Market în loc de aplicația Play.

Deci eroarea pe care trebuie să o arăți utilizatorului și testul pe care trebuie să-l faci nu este dacă dispozitivul are cont google, ci dacă are servicii google play instalate și actualizate corect.

ACTUALIZAȚI:

Dacă căutați cod în bibliotecile SDK și clasele de ajutor oferite de google, acesta este singurul loc unde putem găsi exact ceea ce apelați: IabHelper din clasa IabHelper

Intenție serviceIntent = intenție nouă ("com.android.vending.billing.InAppBillingService.BIND"); if (! mContext.getPackageManager (). queryIntentServices (serviceIntent, 0) .isEmpty ()) (// serviciu disponibil pentru a gestiona acea intenție mContext.bindService (serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);) else (// nici un serviciu disponibil pentru a gestiona acea intenție mServiceConn = null; if (ascultător! = nul) (ascultător.onIabSetupFinished (nou IabResult (BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE, „Serviciul de facturare indisponibil pe dispozitiv.”));))

Aceasta înseamnă că aplicația nu se poate conecta la serviciul de pe dispozitiv, deoarece managerul de pachete nici măcar nu știe despre asta . Aceasta este singura opțiune care poate provoca această eroare. Și ce înseamnă că nu se poate conecta la serviciu? Aceasta înseamnă unul dintre următoarele:

  • Dispozitivul nu are un serviciu instalat.
  • Are o versiune veche, deoarece știm că cele mai recente versiuni ale magazinului de jocuri folosesc IAB v3.

Deci eroarea ta poate însemna doar una dintre acestea, ceea ce înseamnă pentru tine că trebuie să arăți utilizatorului mesagge, de exemplu: „Nu ai instalat serviciile Google Play sau trebuie să le actualizezi”. Și nu există altă posibilitate sau să obțineți această eroare.

Dar, dacă doriți să le ușurați utilizatorilor, le puteți spune că trebuie să actualizeze aplicația Google Play la cea mai recentă versiune. Și va face totul să funcționeze ca un farmec.

Această eroare este acceptată și după ce utilizatorul își șterge contul Google de pe dispozitiv.

Practic, posibilitatea problemei dvs. BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE este că în unele țări nu este încă permisă în Achiziția aplicației, cum ar fi în Serbia și în multe țări.

Astfel, orice utilizator dintr-o țară în care Google Play nu acceptă achiziția aplicației va primi BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE.

Acest lucru va fi mai puțin probabil ca utilizatorul să nu aibă Serviciul Google Play instalat pe telefon actualizat, așa că nu vă faceți griji cu privire la acest caz.

Încercați aceste hack-uri

Ștergeți memoria cache, datele și actualizările pentru aplicația de reluare, lansați din nou aplicația de reluare, ar trebui să funcționeze! Sau încercați cu cele mai recente actualizări (dacă s-au rezolvat)

FYI:

Ține cont doar de:

    IABv3 este încorporat în Serviciile Google Play, deci este necesară o actualizare pentru a actualiza App Play.

    V2 a fost integrat în clientul Play Store. Problema cache / EULA nu este legată în mod specific de IAB, are legătură cu setarea Serviciilor Play (și sperăm că pentru majoritatea utilizatorilor acest lucru este opțional, oricum face parte din cache).

    În această perioadă de tranziție, când Serviciile Play trebuie actualizate, sistemul trebuie să fie actualizat pentru ca aplicația să-l folosească, dar cred că majoritatea oamenilor ar fi de acord că acest lucru este mai bine decât să aștepte o actualizare a sistemului de operare.”

Vezi acest raport: raport de eroare, mesaj G +

Dacă nu v-ați autentificat dispozitivul cu contul Google, este posibil să primiți această eroare.

Pentru cei care încă se confruntă cu această problemă, în cele mai multe cazuri iab nu este acceptat în țara dvs., așa cum a spus Williams. Puteți folosi un VPN pentru ca acesta să funcționeze.

Dacă un PBX obișnuit nu mai este cool pentru tine, atunci în lexic apare cuvântul INTEGRARE. Pentru mulți, acest cuvânt este asociat cu procese complexe, dezvoltare îndelungată și bugete mari. INTEGRAREA este de obicei urmată de API, chiar setul de proceduri și mijloace prin care IP PBX-ul nostru este conectat la o aplicație terță parte.


Semnificația INTEGRAȚIEI se rezumă aproape întotdeauna la transferul de la IP PBX la aplicație (de obicei un fel de CRM) a numărului atunci când se efectuează un apel (ei bine, faptul apelului în sine, desigur) și transferul aceluiași număr de la aplicația către IP PBX la ieșire. În plus, aplicația însăși decide ce să facă cu acest număr:

  • Deschideți cardul găsit după număr
  • Faceți o intrare în jurnal
  • Trimite un mesaj
  • etc.

Mai rar, INTEGRAREA implică încorporarea unei funcționalități mai largi:

  • Managementul stării liniei operatorului
  • Lucrul cu propriile apeluri
  • Gestionarea apelurilor colegilor
  • Lucrul cu conferințe
  • Lucrul cu agenda telefonică
  • etc.

Aici, de fapt, transferăm funcționalitatea softphone-ului nostru CRM.

Care sunt API-urile 3CX

API HTTP

Cu ajutorul lui puteți:

  • Efectuați un apel de la un abonat 3CX (la un număr intern sau extern)
  • Deconectați abonatul
  • Activează abonatul
  • Dezactivați apelurile externe ale abonatului
  • Activați apelurile externe către abonat
  • Activați înregistrarea conversației pentru abonat
  • Dezactivați înregistrarea apelurilor pentru abonat

Totul funcționează destul de simplu, de exemplu, pentru a efectua un apel, introducem următoarea linie în browser
ADRESĂ IP -3CX: 5000 / ivr / PbxAPI.aspx? Func = make_call & from = numere-apelare-de la & către = apelare-unde & pin = parolă

Mai întâi, apelul va ajunge la inițiator, îl va pune în așteptare, apoi 3CX va apela la numărul de la distanță și va combina apelurile.

Descrierea completă a variabilelor este aici - http://www.3cx.com/blog/docs/3cx-http-api/
Îl puteți folosi în orice CRM bazat pe browser. Contra - interacțiune numai față de centrala telefonică automată. Este imposibil să trimiteți o notificare clientului despre un apel primit în acest fel.

API-ul CRM

Cu ajutorul lui puteți:

  • Efectuați apeluri dintr-o aplicație terță parte
  • Notificări privind modificarea stării apelului (conexiune stabilită, deconectată, apelare, apelare etc.)
  • Notificări privind starea abonatului (conectat, deconectat, fără conexiune la PBX)

CRM API este în esență un modul pentru softphone nativ - 3CX Phone for Windows. Pentru a dezvolta un plug-in, trebuie să cunoașteți Microsoft Visual Studio. Se realizează o bibliotecă DLL, care este scrisă în fișierul de configurare al softphone-ului.

Îl poți folosi oriunde. Trebuie amintit că acest API necesită un softphone, acesta este atât un plus: preia interacțiunea client - server și un minus - este nevoie oricum de un softphone.

CALL CONTROL API

API-ul de control al apelurilor este disponibil pentru sistemul telefonic 3CX versiunea 11 și ulterioară și vă permite să controlați apelurile în mod programatic. Dezvoltarea necesită experiență cu .NET și C #.


Cu ajutorul lui puteți:
  • Vizualizați toate apelurile active pe PBX
  • Interceptarea controlului apelurilor
  • Transfer de apel
  • Închide
  • Modificarea setărilor sistemului telefonic 3CX
  • Și încă vreo 30 de funcții diferite
Utilizarea acestui API presupune aplicarea în proiecte mari. Principala diferență față de alte API-uri este că interacțiunea merge direct cu PBX-ul (cu partea de server) și nu cu clientul.
Descrierea comenzilor cu exemple este aici - http://www.3cx.com/blog/docs/call-control-api/

Integrari CRM disponibile „din cutie”

Toate integrările disponibile sunt realizate ca pluginuri pentru 3CX Phone.
  • Click to Call - abilitatea de a forma un număr cu un singur clic din CRM.
  • Apel pop-up - afișarea automată a unei cărți de contact pe baza ID-ului apelantului.
  • Jurnalele de apeluri - păstrarea istoricului apelurilor în CRM.
Acțiunile din partea CRM sunt configurate în 3CXPhone.
Integrarea cu Microsoft Outlook și Microsoft Office 365 este disponibilă pentru orice versiune comercială a licenței comerciale 3CX Phone System. Alte pluginuri necesită versiunea CRM 3CX Phone System PRO. Trebuie remarcat faptul că numărul de utilizatori ai acestor plugin-uri nu este licențiat în niciun fel.

Pe lângă Outlook și Office deja menționate, sunt acceptate următoarele CRM-uri:

  • Microsoft Dynamics
  • Contacte Google
  • Forta de vanzare
  • SugarCRM
  • Sage CRM
Fiecare plugin este instalat dintr-un kit de distribuție generală și are 2 părți, prima este 3CXPlugin pentru telefonul mobil și a doua este un pachet de personalizare pentru sistemul CRM și un mic manual de instalare, astfel încât să apară butonul necesar în interfața - CALL.

În a doua parte a articolului, voi oferi o selecție de pluginuri și module terțe implementate pe API-ul 3CX.