Teleconferință, asterisc, acasă snussi e în spațiul web

Pentru cei care se află în rezervor, apelul conferință - abilitatea de a vorbi în același timp mai mulți participanți.

Documentația pentru Asterisk descrisă aplicarea MeetMe (care gestionează conferința) și o modalitate de a organiza o „sali statice“ - adică, ne prescrie în avans numărul sălii și parola, iar apoi utilizatorii sunt conectate la acesta.

Dezavantajul acestui fapt, în opinia mea, după cum urmează: de exemplu, am organizat o conferință în sala de conferințe cu numărul 1, și vorbind cu furnizorul. Colegul meu, de asemenea, a decis să vorbească cu apelul conferință și va organiza o conferință. Pentru început el trebuie să găsească cumva afară - dacă camera 1 este liber, și apoi să ia o cameră 2. Al treilea sondaj de partid trebuie să are două ...

În general, eu văd drept alt mod:

  1. Am organiza o conferință prin apelarea numărului de serviciu pe, de exemplu, * 9 *.
  2. Am format numărul persoanei care ar dori să se alăture (la 0).
  3. Persoana se alătură. Dacă este de la utilizatorii interni, acesta poate invita, de asemenea, un nou membru.

/etc/asterisk/meetme.conf creați fișierul și de a face să-l:

[General]
; Permite utilizarea în timp real
Programul = da
; tabel va fi actualizat la intrarea / ieșirea participanților
logmembercount = da

Ca și în cazurile anterioare, datele conferințe vor fi stocate în MySQL. Crearea unui tabel pentru ei:

CREATE TABLE tbl_meetme (
char confno (80) NOT NULL default '0',
datetime starttime NOT NULL default '0000-00-00 00:00:00',
ENDTIME datetime NOT NULL default '2099-12-31 23:59:59',
pin NULL char (20) prestabilit,
opteazã NULL char (100) implicit,
char adminpin (20) NULL implicit,
adminopts char (100) implicit NULL,
NOT NULL default membrii '0' int (11)
NOT NULL default '0' maxusers int (11)
datetime created_at NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (confno, starttime)
);

Și a făcut un loc în /etc/asterisk/extconfig.conf

meetme => odbc, asterisc, tbl_meetme

Doar restaura dintr-un fișier copie de rezervă /etc/asterisk/indications.conf în secțiunea [General] setați țara = ru.

Nu uita pentru a reporni asterisc.

Pentru a începe cu - împrumut procedura de creare a conferinței. Provocarea este aceasta: prin formarea * 9 * este necesar să se introducă o linie în tabel și a reveni la sala de conferințe, apoi zadialitsya-l.

Creați un hranimku în MySQL, care creează o nouă conferință, și returnează numărul său. În același timp, se curăță conferința cu mai mult de o zi în urmă.

DELIMITER $$
CREATE DEFINER = `root` @`% PROCEDURE` create_meetme_conference` `()
BEGIN
DELETE FROM tbl_meetme WHERE membri = 0 ȘI DATE_ADD (created_at, INTERVAL 1 ZI) SELECT @NewConfNo: = IFNULL (CAST (MAX (confno) ca UNSIGNED), 0) +1
DE LA tbl_meetme;
INSERT INTO tbl_meetme (confno, created_at) SELECT @ NewConfNo, ACUM ();
SELECT @NewConfNo;
END

În fișier func_odbc.conf adăuga un apel la acest hranimki

[CREATE_NEW_CONFERENCE]
; crearea unei noi meetme conferință
DSN = asterisc
readsql = asterisk.create_meetme_conference apel

Suplimentul dialplan (încă - în scopuri de testare) crearea conferinței

EXTEN => * 9 * 1, NOOP (Start Conference)
EXTEN => * 9 *, n, Goto (conference_main, s, 1)
EXTEN => * 9 *, n, returnare

[Conference_main]
; contextul conferinței
EXTEN => s, 1, NOOP (conference_main)
; a pus o interdicție pe chips-uri dinamice
EXTEN => s, n, Set (__ DYNAMIC_FEATURES =)
; Obținem sala de conferințe utilizând procedura (dacă nu)
EXTEN => s, n, Set (__ CONFNO = $ "=" „] $ $ :?)>)
; Am stabilit contextul pentru care va fi întocmită (în cazul nostru -. Extra set)
EXTEN => s, n, Set (MEETME_EXIT_CONTEXT = conference_invite_user)
; pierde salut
EXTEN => s, n, Redare (Rittal / meetme_welcome)
; în cazul în care acesta este un utilizator intern - a spus cum să invite
EXTEN => s, n, GotoIf ($ [ "$, dinamic)>" = "da"]:? create_conf)
EXTEN => s, n, Redare (Rittal / meetme_add_possible)
; și conferința de lansare
EXTEN => s, n (create_conf), MeetMe ($, X1)

Utilizatorul are deja în cadrul conferinței, ar trebui să poată invita pe oricine altcineva. Ideea este luat de aici.

Formulăm problema după cum urmează:

  1. În timp ce într-o conferință, utilizatorul apasă 0.
  2. Utilizatorul sare din apelare de conferințe.
  3. După un anumit număr și vorbesc cu numărul apelat, în cazul în care utilizatorul apasă **. se conecteaza persoana apelat la conferință, în cazul în care * # - nu se conectează.
  4. În continuare, utilizatorul este returnat înapoi în conferință.

Pentru a începe, creați un fișier /etc/asterisk/features.conf și montează două combinații - ** și * #.

[Applicationmap]
conference_invite_user => * 0, apelantului, Macro, conference_invite_user
conference_invite_cancel => * #, apelantului, Macro, conference_invite_cancel
conference_invite_ok => ** apelantului, Macro, conference_invite_ok

Acum, invitații dialplan și macro-uri, ca răspuns la combinația

[Conference_invite_user]
; context, este de a invita utilizatorii la o conferință
EXTEN => 0,1, NOOP (conference_invite_user ConfNo:. $)

; verificați că acest număr de extensie - acesta poate invita noi membri numai

EXTEN => 0, n, GotoIf ($ [ "$, dinamic)>" = "da"]:? return_to_conference)
EXTEN => 0, n, Redare (Rittal / meetme_add_instruction)

; citește numărul apelat-utilizator, oferind incidental tonul
EXTEN => 0, n, Read (NEWDIAL, cadran ,, i)
; să stabilească un permis de muncă pentru funcțiile de transfer apel
EXTEN => 0, n, Set (__ DYNAMIC_FEATURES = conference_invite_ok # conference_invite_cancel)
; și formați numărul, setarea pavilion „pentru a continua după hengapa“
EXTEN => 0, n, Gosub (internal_phones_outgoing_dial, $, 1)
; a reveni la conferința
EXTEN => 0, n (return_to_conference), Du-te (conference_main, s, 1)

[Macro-conference_invite_ok]
; în cazul în care a răspuns, **
EXTEN => s, 1, NOOP (macro-conference_invite_ok)
; apelantului este transferat la conferință,
EXTEN => s, n, ChannelRedirect ($, conference_main, s, 1)
; și s-au întors acolo.

[Macro-conference_invite_cancel]
; în cazul în care a răspuns * #, apoi închideți și pentru a reveni la conferința
EXTEN => s, 1, NOOP (macro-conference_invite_cancel)
EXTEN => s, n, SoftHangup ($)