Asterisk Recording and Screen Pop

Hi,
We are thinking about implementing an asterisk based PBX in our office. Some of the issues that have come up are recording and screen pop.
1) Is it possible to record all phone calls into some database -- preferrably with the order number that the customer entered at prompt as reference? As well as the time/date/extension/DNIS line called/time of call as well as all transfers etc....? Is there special software available that does this already?

2) Can we do a screen pop with the order number of the customer (that was entered at prompt) to the person that the call is transferred to? possibly by sending some TCP message to the machine and running some program on the machine (windows) to do the pop? Again, is there anything out there that has handled this exact situation?


Thanks!
morudaAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

grbladesCommented:
1) Recording calls is no problem. See http://www.voip-info.org/wiki/view/MixMonitor for information on the mixmonitor command. Asterisk can also log all call information to a database. You can use the call reference ID as the audio filename so you can correlate the files to the entries in the database.

2) It will certenly be possible but I dont know if anyone has already done it. Some SIP based phones support the receiving of the text messages while in a call so if you used a compatible phone you could have the order number shown on the phone display itself.
0
morudaAuthor Commented:
any program that we can run on a windows box that polls asterisk for extension XX and sees if any order number was entered at the prompt-- and then we can pop a program with the order # populated?
0
grbladesCommented:
Asterisk allows you to program using variables and gotoif commands. It can also run external programs. You could therefore have the entered order number stored in the *{ORDER} variable and then you can run an external command such as :-
echo ${ORDER} | smbclient -M <macine-name>

The 'smbclient' is installed as standard on Linux normally and is part of the samba package which offers windown type file sharing. The -M parameter sends a popup message to the machine specified using the normal windows popup message method.
0
Cloud Class® Course: Certified Penetration Testing

This CPTE Certified Penetration Testing Engineer course covers everything you need to know about becoming a Certified Penetration Testing Engineer. Career Path: Professional roles include Ethical Hackers, Security Consultants, System Administrators, and Chief Security Officers.

morudaAuthor Commented:
sounds like half of what I need, but I need it to actually run a program and pass the orderid to the program so that the order opens up on the screen. I know a lot of TAPI programs out there do this, but I have no idea how they work or how it could work with asterisk.
0
grbladesCommented:
Well if there is a client available for Linux and it accepts  the data either via a command line or as a file then it can be linked with Asterisk.
0
morudaAuthor Commented:
thanks
0
grbladesCommented:
Here is an unrelated example of the sort of thing you can do when you use the programming features of asterisk together with external software.
The following macro receves a fax and looks op the destimation number in the asterisk database to see if it has a corresponding email address or printer defined. If there is a printer defined then it is printed and if an email address is defined then it is sent to the user as a PDF file.

[macro-fax]
exten => s,1,Set(FAXFILE=${UNIQUEID}.tif)
exten => s,2,Set(FAXOK=no)
exten => s,3,rxfax(/var/spool/asterisk-fax/${FAXFILE})
exten => s,4,Set(PRINTER=${DB(faxprinter/${MACRO_EXTEN})})
exten => s,5,GotoIf($["${PRINTER}" = "" ]?8)
exten => s,6,Set(FAXOK=yes)
exten => s,7,system(/usr/local/bin/printfax ${UNIQUEID} ${FAXFILE} ${PRINTER} "${CALLERIDNUM} ${CALLERIDNAME}")
exten => s,8,Set(EMAILADDR=${DB(faxemail/${MACRO_EXTEN})})
exten => s,9,GotoIf($["${EMAILADDR}" = "" ]?200)
exten => s,10,system(/usr/local/bin/mailfax ${UNIQUEID} ${FAXFILE} ${EMAILADDR} "${CALLERIDNUM} ${CALLERIDNAME}")
exten => s,11,Hangup
exten => s,108,Goto(201)
exten => s,111,Goto(201)
exten => s,200,GotoIf($["${FAXOK}" = "yes" ]?11)
exten => s,201,Set(EMAILADDR=helpdesk@xxxxx)
exten => s,202,Goto(10)

Here is the /usr/local/bin/printfax script :-
#!/bin/sh
FAXID=$1
FAXFILE=$2
FAXPRINTER=$3
FAXSENDER=$4
DATETIME=`date +"%A %d %b %Y %H:%M"`
cd /var/spool/asterisk-fax
if [ -e $FAXFILE ]
then
  tiff2ps -2eaz -w 8.25 -h 11.5 $FAXFILE | lp -d $FAXPRINTER -
fi

And the mailfax script:-

#!/bin/sh
FAXID=$1
FAXFILE=$2
FAXRECIPIENT=$3
FAXSENDER=$4
DATETIME=`date +"%A %d %b %Y %H:%M"`
cd /var/spool/asterisk-fax
if [ -e $FAXFILE ]
then
  MAILFILE="$FAXID.mail"
  PAGES=$(tiffinfo $FAXFILE | grep "Page")
  DT=$(tiffinfo $FAXFILE | grep "Date")
  DTFAX=${DT#*:}
  COUNT=${PAGES#*-}
  echo "You have just recieved a new fax document." >$MAILFILE
  echo >>$MAILFILE
  echo "From        : $FAXSENDER" >>$MAILFILE
  echo "Received at : $DATETIME" >>$MAILFILE
  echo "Dated       : $DTFAX" >>$MAILFILE
  echo "Pages       : $COUNT" >>$MAILFILE
  echo >>$MAILFILE
  echo "The fax has been converted to an Acrobat .PDF and attached to this email." >>$MAILFILE
  tiff2ps -2eaz -w 8.25 -h 11.5 $FAXFILE | ps2pdf - | mime-construct --to $FAXRECIPIENT --subject "Fax Received from $FAXSENDER" --file $MAILFILE --attachment $FAXID.pdf --type application/pdf --file -
#  tiff2pdf -p a4 $FAXFILE | mime-construct --to $FAXRECIPIENT --subject "Fax Received from $FAXSENDER" --string "$BODY" --attachment $FAXID.pdf --type application/pdf --file -
else
  MAILFILE="$FAXID.mail"
  echo "A call was received on your fax line however no fax was received or there was an error." >$MAILFILE
  echo >>$MAILFILE
  echo "From  : $FAXSENDER" >>$MAILFILE
  echo "When  : $DATETIME" >>$MAILFILE
  mime-construct --to $FAXRECIPIENT --subject "Error receiving fax from $FAXSENDER" --file $MAILFILE
  cat $MAILFILE
fi
0
morudaAuthor Commented:
i guess anything is possible with asterisk -- i wish i had some program that i could try this out in windows with, so that I could demo this to my clients -- they want some advice whether to go ahead with asterisk or not
0
CallingCirclesCommented:
I hate to do shameless plugs for my own products, but I was looking for something similar (to demonstrate screenpops) and wound up writing a tool for Outlook 2003.  You can download a free trial at http://www.callingcircles.com.

Using the Manager interface, we monitor devices (any kind of channel, SIP/IAX,ZAP, etc.) and our client program pops the Outlook contact of the person.  You can also configure the software to create a new contact for you if one is not found.

Although you didn't ask about click-2-dial, this program also lets you do that from Outlook (and soon maybe other office programs too - stay tuned).  Click on the contact and use the Calling Circles Toolbar to dial.

Full setup instructions are on the website and feel free to contact me if you need additional assistance.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Voice Over IP

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.