pkaeding
pkaeding

Reputation: 37643

Suggested Approaches to programmatically make and record a VOIP call

I want to write a program that will be able to call into my company's bi-weekly conference calls, and record the call, so it can then be made into a podcast.

I am thinking of using Gizmo's SIP interface (and the fact that it allows you to make toll-free calls for free), but I am having trouble finding any example code (preferably in Java) that will be able to make an audio call, and get hold of the audio stream.

I have seen plenty of SIP programming tutorials that deal with establishing a session, and then they seem to just do some hand waving, and say "here is where you can establish the audio connection" without actually doing it.

I am experienced in Java, so I would prefer to use it, but other language suggestions are welcome as well.

I have never written a VOIP application, so I'm not really sure where to start. Can anyone suggest a good library or other resource that would help me get started?

Thanks!

Upvotes: 4

Views: 2716

Answers (4)

yohann.martineau
yohann.martineau

Reputation: 1643

try peers with mediaDebug option true in peers.xml. This option records all outgoing and incoming media streams in a media/ folder with a date pattern for file name. Nevertheless this file will probably not be usable as is. It contains raw uncompressed lienar PCM samples. You can use Audacity, sox or ffmpeg to convert it to whatever you want.

Upvotes: 1

Barnabas Kendall
Barnabas Kendall

Reputation: 4317

You could do this with Twilio with almost no programming whatsoever. It will cost you 3¢ per minute, so if your company's weekly call is 45 minutes long, you're looking at $1.35 per week, about as close to free as possible. Here are the steps:

  1. Sign up for Twilio and make note of your Account ID and token
  2. Create a publicly accessible file on your web server that does nothing but output the following XML (see the documentation for explanation of the record parameters):

    <Response> <Record timeout="30" finishOnKey="#" /> </ Response>

  3. When it's time to start the recording, perform a POST to this URL (documented here) with your browser or set up an automated process or script to do it for you:

    POST http://api.twilio.com/2008-08-01/Accounts/ACCOUNT SID HERE/Calls HTTP/1.1 Called=CONFERENCE NUMBER HERE &Url=WEB PAGE HERE &Method=GET &SendDigits=PIN CODE HERE

If you want to get really creative, you can actually write code to handle the result of the recording verb and email the link to the MP3 or WAV file that Twilio hosts for you. But, if this is a one off, you can skip it because you can access all your recordings in the control panel for your account anyway.

Upvotes: 2

jesup
jesup

Reputation: 6984

Look for a VOIP softphone writtin in Java, then modify it to save the final audio stream instead of sending it to be played.

Side note: In many states you would be violating the law unless you do one of several things, varying by state: Notify the participants they're being recorded, insert BEEPs every N seconds, both, etc. Probably you only have to comply with the laws of the state you're calling from. Even worse, you may need to allow the users to decline recording (requires you to be there before recording starts). If you control the conference server, you may be able to get it to play a canned announcement that the call is being recorded.

Upvotes: 2

Denis Tulskiy
Denis Tulskiy

Reputation: 19177

https://voip.dev.java.net/

They have some sample code there.

Upvotes: 0

Related Questions