# VOIP > Hardware Reviews >  Text Caller Recognition

## mojiro

Mετά από αρκετό ψάξιμο στην αγορά (και τις συμβουλές του Mew) για 
εύρεση συσκευής η οποία υποστηρίζει αναγνώριση κλήσεων με κείμενο
κατέληξα στην αγορά της συσκευής Panasonic KX-TG8100 (~50eu).

Τι διαφορά έχει αυτή η αναγνώριση από αυτή που μέχρι τώρα ξέρουμε;
Αντί να γράφεται το νούμερο του καλούντα, είναι δυνατόν να γράφεται,
ότι επιθυμεί ο Πάροχος Τηλεφωνίας του καλούντα. Ο Π.Τ. μπορεί να
είναι φυσικά ένας ο Asterisk όπου με τις κατάλληλες ρυθμίσεις σε κάθε
friend μπορεί να αποστέλλει κείμενο αντί για απλό αριθμό.

Από ότι φαίνεται τέτοια υποστήριξη έχουν όλες οι συσκευές με SMS καθώς
και οι οθονούλες που είχαν κυκλοφορήσει κάποια στιγμή και παρεμβάλοταν
της συσκευής.

Στον Asterisk πάμε στο sip.conf και στο κάθε friend/peer προσθέτουμε την
παράμετρο:

_callerid = "18321-mojiro" <18321>_

με αυτή τη σύνταξη υπάρχει συμβατότητα τόσο με τις κλασσικές συσκευές
όσο και με αυτές που έχουν SMS.

Προσωπικά το θεωρώ μεγάλη ευκολία αυτό το χαρακτηριστικό ίσως όχι
τόσο για το Awmn όσο για εγκαταστάσεις Asterisk στη θέση συμβατικού
τηλεφωνικού κέντρου.

----------


## paravoid

Έχω γράψει ένα AGI που τραβάει από το whitepages.gr το όνομα, το μετατρέπει σε Greeklish και lowercase (εκτός από το πρώτο κάθε λέξης) και το κάνει cache στην database του Asterisk (και φυσικά κάνει lookup την cache στην αρχή).

Είναι γραμμένο σε C με τη βοήθεια της libcurl, για μεγαλύτερη ταχύτητα μιας και όση ώρα γίνεται lookup (το timeout είναι ρυθμιζόμενο) η εισερχόμενη δεν χτυπά.

Υπάρχει ενδιαφέρον; Αν υπάρχει σκοπεύω να το διαθέσω κάτω από GNU GPL.

----------


## mojiro

εχμ.. το ρωτας αμα πρεπει να το βγαλεις ? do it

----------


## pathfinder

> Mετά από αρκετό ψάξιμο στην αγορά (και τις συμβουλές του Mew) για 
> εύρεση συσκευής η οποία υποστηρίζει αναγνώριση κλήσεων με κείμενο
> κατέληξα στην αγορά της συσκευής Panasonic KX-TG8100 (~50eu).
> 
> Τι διαφορά έχει αυτή η αναγνώριση από αυτή που μέχρι τώρα ξέρουμε;
> Αντί να γράφεται το νούμερο του καλούντα, είναι δυνατόν να γράφεται,
> ότι επιθυμεί ο Πάροχος Τηλεφωνίας του καλούντα. Ο Π.Τ. μπορεί να
> είναι φυσικά ένας ο Asterisk όπου με τις κατάλληλες ρυθμίσεις σε κάθε
> friend μπορεί να αποστέλλει κείμενο αντί για απλό αριθμό.
> ...


Εγω εχω ενα παλιο ασυρματο DECT panasonic με SMS δυνατοτητα και το εχω συνδεσει με SIPURA3000 οταν εχω εισερχομενη VOIP τοτε φαινεται και το username Που εχει δηλωθει

----------


## paravoid

> εχμ.. το ρωτας αμα πρεπει να το βγαλεις ? do it


Right.




> Για να γίνουν compile τα εργαλεία, θα πρέπει να έχετε τα development headers
> της libc και της libcurl καθώς και compiler (gcc) και GNU Make.
> Σε Debian/Ubuntu, αρκεί το:
> * για sarge, etch, dapper, edgy, feisty:
> apt-get install build-essential libcurl3-dev
> * για lenny, sid (20071020) kai gutsy:
> apt-get install build-essential libcurl4-openssl-dev
> 
> Έπειτα, εκτελώντας απλά "make" στο παρόν directory και θα δημιουργηθούν δύο
> ...


[mods, ίσως έχει νόημα να γίνει split σε άλλη ενότητα...]

----------


## cirrus

Bravo φοβερό. Είχα φτιάξει και εγώ ένα script παλιότερα σε php που έκανε αντίστοιχη δουλειά, αλλά αυτό είναι μακράν καλύτερο και παίζει και με agi.

Όλα τα λεφτά είναι και το αρχείο greeklish.utf-8.c:


```
/*
 * Greeklish conversion function
 *
```

  ::   ::   :: 

Επίσης με μια μικρή αλλαγή κάνει compile και στο macosx οπότε μπορεί να φτιάξω και ένα widget βασισμένο πάνω του.
Nice work.

----------


## enaon

πολύ πλάκα έχεις Γιάννη  :: 

Στην αρχή δοκίμασα το δικό σου, αλλά έδειχνε χίλιες μπούρδες στα ελληνικά. Μετά ανέλαβε ο Νίκος, του έβαλε greeklish και επιλογή για ονοματεπώνυμο μόνο και ήταν καλύτερα. Μετά το πήρε ο Φαίδωνας, του έβαλε μετατροπή σε μικρά, το μάζεψε γενικά, και μετά το ξαναέφτιαξε απο την αρχή και παίζει τέλεια επιτέλους  :: 

Για χρήση απο το freepbx, βαζουμε το agi στο /usr/share/asterisk/agi-bin/idlookup ( το μετονομάζουμε σε idlookup) και τροποποιούμε τα functions.inc.php και page.cidlookup.php για να εμφανιστεί το μενού. 

Συνημμένα τα php για Caller ID Lookup 1.1.1 module που έχει το δικό μου freepbx (2.2.2)και το agi για χ86

----------


## paravoid

> Στην αρχή δοκίμασα το δικό σου, αλλά έδειχνε χίλιες μπούρδες στα ελληνικά. Μετά ανέλαβε ο Νίκος, του έβαλε greeklish και επιλογή για ονοματεπώνυμο μόνο και ήταν καλύτερα. Μετά το πήρε ο Φαίδωνας, του έβαλε μετατροπή σε μικρά, το μάζεψε γενικά, και μετά το ξαναέφτιαξε απο την αρχή και παίζει τέλεια επιτέλους


Άσε, μην ψάχνεις ιστορικό  :: 
Ξέρω τουλάχιστον 5 implementations (τα 3 που λες + άλλο ένα δικό μου σε Perl + άλλο ένα ενός φίλου με shell & expect).
Είπα να τελειώνω με αυτά once and for all, σε C να ναι γρήγορο και να κάνει σωστά τη δουλειά (cache στην database του asterisk).




> Συνημμένα τα php για Caller ID Lookup 1.1.1 module που έχει το δικό μου freepbx (2.2.2)και το agi για χ86


Έχω κάνει κάτι αλλαγές από τότε, θα σου λεγα να το ξανακάνεις compile...

----------


## Neuro

thnx paravoid  ::

----------


## Ernest0x

> Ξέρω τουλάχιστον 5 implementations (τα 3 που λες + άλλο ένα δικό μου σε Perl + άλλο ένα ενός φίλου με shell & expect).


Σε python έχουμε τίποτα;  ::  

*Ωραία και περιποιημένη δουλειά!*  :: 

Υ.Γ.: Υπάρχει ένα μικρό optimization ως προς το runtime που μπορεί να γίνει στο greeklish conversion, αλλά ίσως να μην έχει νόημα στις μέρες μας και ειδικά στην συγκεκριμένη εφαρμογή (http fetching time >>> conversion time και μικρό input string). Δηλαδή, αντί για switch statement, να χρησιμοποιήσεις μια δομή πίνακα που να κάνει map τις αντικαταστάσεις σε charset offsets. Το αναφέρω απλά σε περίπτωση που κάποιος θέλει να πάρει μονάχα το greeklish conversion για άλλη χρήση, γιατί θυμήθηκα μια παρόμοια ρουτίνα που είχα γράψει αρκετά παλιότερα στην οποία έβλεπα διαφορά για μεγάλα αρχεία.

----------


## ysam

::  URL changed..

----------


## paravoid

> URL changed..


Χμ, χαμπάρι δεν είχα πάρει.
Από ό,τι φαίνεται α) κατήργησαν το whitepages.oteshop.gr και χρησιμοποιούν μόνο το http://www.whitepages.gr, β) ξαναέγραψαν το site σε ASP.NET (από ASP).

Το συννημένο:
α) Δουλεύει.
β) Χρησιμοποιεί το /en/ του ΟΤΕ και δεν κάνει πια το ίδιο το greeklish (έχει και τα κακά του αυτό)

Το έκανα πολύ στα γρήγορα (είμαι σε διακοπές) οπότε είναι πολύ πιθανό να μου χει ξεφύγει κάτι  :: 

Τώρα που το δοκιμάζω πάντως φαίνεται αρκετά αργό βέβαια, ~20s για να κάνει lookup.
Δεν ξέρω αν φταίει το καινούργιο site ή το load τους. Είδωμεν.

----------


## enaon

Το σιτε φταίει μάλλον, μοιάζει να βάλανε εσκεμμένα μία καθυστέρηση περίπου 20 δευτερολέπτων.

Για να παίξει, αλλάξαμε στο web.c αυτά:
#define URL "http://www.whitepages.gr/en/results.aspx"
#define PATTERN_START "<td class=\"text-black\" height=\"46\" valign=\"top\" align=\"left\">[b]"

και βάλαμε αυτό στο macro-hangupcall

[macro-hangupcall]
exten => s,1,GotoIf($[${DB_EXISTS(ote/${CALLERID(num)})} = 1]?exists) 
exten => s,n,DEADAGI(/usr/share/asterisk/agi-bin/idlookup|ote|25)
exten => s,n(exists),ResetCDR(w)
exten => s,n,NoCDR()

ώστε να ρωτάει το νούμερο αφού κλείσει το κανάλι, για να το έχει την επόμενη φορά.

----------


## paravoid

> Για να παίξει, αλλάξαμε στο web.c αυτά:
> #define URL "http://www.whitepages.gr/en/results.aspx"
> #define PATTERN_START "<td class=\"text-black\" height=\"46\" valign=\"top\" align=\"left\">[b]"


Δες την έκδοση πιο πάνω. Δεν έχεις φτιάξει το PATTERN_PRIVATE π.χ.




> και βάλαμε αυτό στο macro-hangupcall
> 
> [macro-hangupcall]
> exten => s,1,GotoIf($[${DB_EXISTS(ote/${CALLERID(num)})} = 1]?exists) 
> exten => s,n,DEADAGI(/usr/share/asterisk/agi-bin/idlookup|ote|25)
> exten => s,n(exists),ResetCDR(w)
> exten => s,n,NoCDR()
> 
> ώστε να ρωτάει το νούμερο αφού κλείσει το κανάλι, για να το έχει την επόμενη φορά.


Ναι, γίνεται και αυτό. Και lookup του * στην εισερχόμενη.

Σίγουρα είναι τεχνητή η καθυστέρηση; Και παλιά μου έκανε σε ώρες αιχμής καθυστερήσεις έως και 45s.

----------


## enaon

Μάλλον ναι, το έκανε και το βράδυ αργά εχθες που παίζαμε με τον ysam, αλλά αν μπορείς να το δείς εσύ η ο cirrus klp, για να είμαστε σίγουροι.

----------


## ysam

> Αρχική Δημοσίευση από enaon
> 
> Για να παίξει, αλλάξαμε στο web.c αυτά:
> #define URL "http://www.whitepages.gr/en/results.aspx"
> #define PATTERN_START "<td class=\"text-black\" height=\"46\" valign=\"top\" align=\"left\">[b]"
> 
> 
> Δες την έκδοση πιο πάνω. Δεν έχεις φτιάξει το PATTERN_PRIVATE π.χ.
> 
> ...


Έχεις κάνει και άλλες αλλαγές εκτός από αυτό? Ρωτάω για να μην αρχίσω τα diff.

----------


## ysam

BTW το delay είναι μάλλον 15+real time αν υποθέσουμε ότι το script κάνει 3". Παίρνω μονίμως 18,0χχ" όσες φορές και αν το τρέξω και το ίδιο βλέπω και από το site τους. Αν το script τρέχει πιο γρήγορα τότε μάλλον είναι λίγο παρανοικός αυτός που έβαλε πχ 16,17 η 18" delay  :: 

Η λύση με το hangupcall είναι μονόδρομος αλλά παίζει  ::  και αυτό μας νοιάζει..

----------


## paravoid

> Έχεις κάνει και άλλες αλλαγές εκτός από αυτό? Ρωτάω για να μην αρχίσω τα diff.


Μέσα στο tarball είναι και το .git μαζί με όλο το revision history. Κάνε ένα "git diff HEAD^" να δεις  :: 
[η απάντηση είναι πως εκτός των όσων έχουν ειπωθεί, έχω κάνει disable και το κομμάτι του greeklish + ένα άλλο fix για τα *BSD]

Παρεπιπτόντως, υπάρχει η LookupCIDName που μπορεί να χρησιμοποιηθεί στις εισερχόμενες εφόσον μπει το "cidname" ως family (που είναι και το default).

----------


## enaon

Παλιά έκανε κάτω ένα δευτερόλεπτο να φέρει το όνομα όταν δέν ήταν φορτωμένοι.
Το μοναδικό σοβαρό πρόβλημα τώρα, είναι οτι αν πραγματικά τους ζορίζουν οι αιτήσεις απο κέντρα asterisk ή άλλες εφαρμογές, δέν θα δυσκολευτούν να βρούν λύση, με την δεύτερη λογικά θα το πετύχουν.

Που σημαίνει οτι, το χρέος πρός την ανθρωπότητα να έχει ένα service που να παρέχει τα ονόματα για τα σταθερά, ακόμα καλύτερα και για τα κινητά κλπ, σε κοιτάει Γιάννη  ::

----------


## ysam

Σώτο τώρα που το λες νομίζω ότι υπάρχει αλλά δεν λέω πολλά ακόμα θα το ψάξω και θα σου πω.

----------


## xrg

Σίγουρα μία μεγάλη, κοινή βάση θα συμπεριφερόταν πολύ καλύτερα από το να κάνει ο καθένας lookup στον πΟΤΕ..

Αλλά, μήπως υπάρχει ζήτημα προσωπικών δεδομένων αμα αποθηκεύουμε αυτή τη βάση; Δεν ξέρω καν αν ο πΟΤΕ είναι εντάξει με το να δίνει τόσο "εύκολα" τα ονόματα.

----------


## ysam

Είναι επιλογή σου να δείχνεις η όχι τα στοιχεία σου. Όταν πας στον ΟΤΕ και παίρνεις τον αριθμό σου το υπογράφεις κιόλας. Είναι επιλογή.. Θέλω/Δεν Θέλω και ανα πάσα στιγμή μπορεί να αλλάξει. 

Σε όλους τους παρόχους ισχύει το ίδιο και μάλιστα για αυτό τον λόγο υπάρχει και ο ενιαίος τηλεφωνικός κατάλογος (ΕΕΤΤ rulez!  ::  ) όπου θα πρέπει όσοι έχουν ζητήσει να φαίνονται να μπορείς να τους βρεις. Είτε είναι σταθερά είτε κινητά. !!!!

Απλά αυτό που ψάχνω είναι να δω που είναι αυτός ο κατάλογος και αν είναι σε production status.

Το ψάχνω.

----------


## xrg

Αμα ο κατάλογος είναι "ελεύθερος", τότε οπωσδήποτε θα την στήσουμε τη βάση..

----------


## zakys

Κάτι σε τηλεφωνικός κατάλογος κινητών δεν υπάρχει να υποθέσω,εκτός φυσικά τα καταχωρημένα νούμερα κινητών που στα δίνουν και στις πληροφορίες.

----------


## mikemtb

> Κάτι σε τηλεφωνικός κατάλογος κινητών δεν υπάρχει να υποθέσω,εκτός φυσικά τα καταχωρημένα νούμερα κινητών που στα δίνουν και στις πληροφορίες.


γιατι μου θυμιζει λιγο εκεινη την διαφημιση με το φανταρο στην πρωινη αναφορα του λοχου???

----------

