Diverse funzionalità del centralino FreePBX, principalmente le outbound route, utilizzano una funzionalità di Asterisk che si chiama pattern matching.

Il pattern matching non è altro che la possibilità di stabilire degli schemi per stabilire delle regole di elaborazione delle chiamate. Ciò ci permette, ad esempio, di distinguere una chiamata estera (inizia con due zeri) da una chiamata urbana (inizia con un solo zero) o una chiamata verso il mobile (inizia con un tre).

Come funziona il pattern matching?

Quando ci viene chiesto di inserire una numerazione che non è finita (ad es., tutte le chiamate verso i fissi), al posto dei numeri possiamo mettere delle lettere.

  • X sta per tutte le cifre da 0 a 9
  • Z sta per le cifre da 1 a 9
  • N sta per le cifre da 2 a 9

Esistono anche delle combinazioni speciali:

  • . (punto) sta per “qualunque combinazione a seguire, almeno un simbolo”
  • ! (punto esclamativo) sta per “qualunque combinazione a seguire, anche zero simboli”
  • [2-5] sta per “qualunque cifra da 2 a 5”, e può essere anche in formato [258], cioè, le cifre 2, 5 e 8

N.B. Dove FreePBX si aspetta un numero e noi intendiamo utilizzare il Pattern Matching, è necessario anteporre alla nostra stringa il simbolo underscore.

Si consiglia sempre di definire al massimo i pattern, quando si usano i wildcard come punto o punto esclamativo, per evitare comportamenti imprevedibili. Infatti, noi utilizziamo sempre “X.” al posto del semplice “.”.

Esempi pratici

Facciamo alcuni esempi:

  • fissa nazionale, inizia con uno zero, la seconda cifra non può essere uno zero e poi qualunque combinazione a seguire: _0ZX.
  • cellulare, inizia con un tre e poi qualunque combinazione a seguire: _3X.
  • internazionale, inizia con due zeri: _00X.
  • numeri verdi, iniziano per 800: _800X.
  • numerazioni fisse Campania (per semplificare presumiamo che i prefissi campani siano 08 e 09, anche se non è proprio così): _0[89]X.

Fonti

https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching

https://wiki.freepbx.org/display/FPG/Outbound+Routes+Module+User+Guide#OutboundRoutesModuleUserGuide-DialPatternsTab