Che cosa è la migliore architettura per l'integrazione CDR per un'applicazione basata su Asterisk

StackOverflow https://stackoverflow.com/questions/4026924

  •  26-09-2019
  •  | 
  •  

Domanda

Iam lo sviluppo di una piattaforma VoIP che permetterebbe agli utenti di effettuare 100s di chiamate in concomitanza con il mio servizio.

Asterisk memorizza tutti i record di dettaglio delle chiamate nella tabella CDR. Vorrei sapere dove è il posto migliore per mantenere questo tavolo per la migliore architettura possibile del mio sistema.

Devo continuare sulla scatola Asterisk ed eseguire un cron per la sincronizzazione con il server di database o devo chiamare direttamente il server DB dal Box Asterisk e registrare tutti i dati direttamente nel database in remoto anche se Asterisk.

Tutto sensazione che entrambe le architetture hanno i loro pro e contro. Vorrei l'aiuto di esperti di suggerire me che sarebbe miglior percorso possibile per la scalabilità a lungo termine e la sostenibilità.

È stato utile?

Soluzione

L'architettura migliore sarebbe quella di utilizzare i nodi distribuiti (Server) cioè PBX, server Web e del server DB in diversi nodi. PBX popolerà il vostro tavolo CDR (questo deve essere in un server DB) dopo ogni conversazione, è possibile recuperare questi record dal vostro web server per il vostro scopo di reporting e la fatturazione.

Utilizzo di Cron al tavolo di sincronizzazione DB non è raccomandato in quanto si mangia le risorse di sistema e larghezza di banda troppo (come questo cron verrà eseguito ogni volta che divorando la risorsa di sistema e la sincronizzazione con Db causerà l'utilizzo di banda) Quindi, utilizzando l'architettura sopra definito consente di risparmiare risorse di sistema che verranno utilizzate nella gestione di cron

In secondo luogo, se si posiziona CDR nelle stesso nodo PBX farà risparmiare risorse di sistema a causa di cron, ma per la segnalazione e la fatturazione è necessario recuperare i dati da questo nodo quindi potete risparmiare larghezza di banda, questo schema ha un grave inconveniente, come attualmente si stiamo parlando di 100 chiamate in concomitanza che dire se si ha 1000 o più ??

In questo caso è necessario utilizzare definitivamente PBX clustering in questo caso avrete bisogno di un DB server centralizzato che verrà sincronizzato con i cluster PBX.

Quindi, in tutti gli aspetti mia architettura suggerito sarebbe perfettamente ideale il vostro bisogno. Come si afferma nella domanda che è necessario solo 100s di chiamate simultanee è possibile utilizzare un singolo nodo per il server DB & Web mentre PBx in altro nodo

Altri suggerimenti

Utilizzando un server di database separato per memorizzare il CDR è l'opzione giusta per qualsiasi cosa, ma un'implementazione mio hobby Asterisk. Asterisk rende facile selezionare un database di destinazione per il CDR e ha una miriade di opzioni di database: MySQL, PostgreSQL. implementazione MSSQL ecc Asterisk CDR utilizza solo una singola tabella quindi è in realtà molto semplice integrazione tra questa e il server di database.

Una cosa da essere molto consapevoli di è che se il server di database o la connessione tra esso e il server Asterisk ha problemi che avranno un impatto vostra elaborazione delle chiamate. Se c'è un problema Asterisk bloccherà mentre mantiene il tentativo di connessione al database di scrivere il CDR. Mentre è in atto che non elaborerà altre chiamate. Probabilmente questo è desiderato comportamento come CDR sono fondamentali per la fatturazione e di non essere in grado di accedere di loro: qualsiasi chiamate sarebbero potenzialmente finiscono per essere liberi. Come un backup è anche possibile impostare la registrazione CDR in un file .csv sul server Asterisk come una cintura e bretelle avvicinarsi.

penso che se è possibile connettersi direttamente da Asterisk alla banca dati di quanto si dovrebbe usare. L'ho visto in alcune installazioni di Asterisk (di cui una abbastanza grande call center) e ha funzionato bene.

L'altra opzione che l'uso in cui non v'è alcun collegamento diretto da Asterisk al database, ma non c'è la connessione HTTPS per altri servizi, o dove fatturazione struttura della tabella non è compatibile con le tabelle Asterisk in modo da utilizzare i file CSV CDR. Tale file si invia ogni pochi minuti per sistema di CRM. Io uso cron e piccolo script Python. In questo modo posso facilmente adattarsi al formato CSV utilizzato dal sistema di fatturazione CRM.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top