Say Hello
Now, get to know how to say an automated greeting message when you have an incoming call. When your installed API Extension gets a call, it will be forwarded to the Incoming call URL to your application. For better understanding please select your programming language and check the following code example.
Now, get to know how to say an automated greeting message when you have an incoming call. First of all, please login and connect to the API Extension. Wait for an Incoming call, and when it is occured just attach a TextToSpeech engine into the call and add the "Hello" as Text.
Next: Greet Caller by Name
Example code coming soon...
[HttpPost] public ActionResult SayHello(string notificationName, string callLegID, string caller, string apiExtension) { return Content( "<Response>" + "<Speak>Hello!</Speak>" + "</Response>", "text/xml"); }
class SayHelloController < ApplicationController protect_from_forgery except: :index # In routes.rb you need to set the following routing rule # post '/say_hello' => 'say_hello#index' def index render :xml => '<?xml version="1.0" encoding="UTF-8"?> <Response> <Speak>Hello</Speak> </Response>' end end
<?php print "<Response>"; print "<Speak>Hello</Speak>"; print "</Response>"; ?>
#!c:/Perl64/bin/perl.exe print "Content-Type: text/plain\n\n"; #You have to add the directory route of perl.exe, and print the content type #Send response by print print '<?xml version="1.0" encoding="UTF-8"?> <Response> <Speak>Hello</Speak> </Response>'
Imports OPSSDK Imports Ozeki.Media.MediaHandlers Imports OPSSDKCommon.Model.Call Imports Ozeki.VoIP Module Module1 Public Sub Main(args As String()) Dim client = New OpsClient() AddHandler client.ErrorOccurred, Sub(sender, info) Console.WriteLine(info.Message) End Sub If Not client.Login("ozekixepbx.ip", "admin", "12345") Then Return End If Dim apiExtension = client.GetAPIExtension("9000") AddHandler apiExtension.IncomingCall, AddressOf IncomingCall Console.ReadLine() End Sub Private Sub IncomingCall(sender As Object, e As VoIPEventArgs(Of ICall)) Dim [call] = e.Item Dim tts = New TextToSpeech() AddHandler tts.Stopped, Sub(s, ev) [call].HangUp() End Sub [call].ConnectAudioSender(tts) AddHandler [call].CallStateChanged, Sub(s, ev) If ev.Item = CallState.Answered Then tts.AddAndStartText("Hello") ElseIf ev.Item.IsCallEnded() Then tts.Dispose() End If End Sub [call].Accept() End Sub End Module
def application(environ, start_response): SpeakText="Hello" result =""" <?xml version="1.0" encoding="UTF-8"?> <Response> <Speak>{0}</Speak> </Response>""".format(SpeakText) response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(result)))] start_response('200 OK', response_headers) return [result]
using System; using OPSSDK; using OPSSDKCommon.Model.Call; using Ozeki.Media.MediaHandlers; using Ozeki.VoIP; namespace OPS_QuickStartExample_CSharp { class Program { static void Main(string[] args) { var client = new OpsClient(); client.ErrorOccurred += (sender, info) => Console.WriteLine(info.Message); if (!client.Login("ozekixepbx.ip", "admin", "12345")) return; var apiExtension = client.GetAPIExtension("9000"); apiExtension.IncomingCall += IncomingCall; Console.ReadLine(); } private static void IncomingCall(object sender, VoIPEventArgse) { var call = e.Item; var tts = new TextToSpeech(); tts.Stopped += (s, ev) => call.HangUp(); call.ConnectAudioSender(tts); call.CallStateChanged += (s, ev) => { if (ev.Item == CallState.Answered) tts.AddAndStartText("Hello"); else if (ev.Item.IsCallEnded()) tts.Dispose(); }; call.Accept(); } } }
package pbxsampleapp; import com.sun.net.httpserver.*; import java.io.*; import java.net.*; public class SayHello { public static void main(String[] args) { try { System.out.println("Starting http server..."); HttpServer server = HttpServer.create(new InetSocketAddress(InetAddress.getByAddress(new byte[]{ 0, 0, 0, 0 }), 12345), 0); server.createContext("/sendsmstocaller", new PbxSampleApp.PBXRequestHandler()); server.start(); System.out.println("http server running on " + server.getAddress().toString()); } catch (IOException ex) { System.out.println("Error" + ex.toString()); } } static class PBXRequestHandler implements HttpHandler { @Override public void handle(HttpExchange httpExchange) throws IOException { httpExchange.getResponseHeaders().add("Content-type", "text/xml"); String response = "<?xml version=\"1.0\"?>" + "<Response>" + "<Speak>Hello!</Speak>" + "</Response>"; httpExchange.sendResponseHeaders(200, response.length()); OutputStream os = httpExchange.getResponseBody(); os.write(response.getBytes()); os.close(); } } }
Code example 1
- Say “Hello” to the caller
The program will send back the OzML response
to the API Extension and the caller.
As you can see, it is just a simple Speak command.
So when the application (the subscribing API Extension) will be called,
the caller will hear a simple “Hello” message.
IN DETAILS
Get the OPSSDK.dll
First you need to add the OPSSDK.dll reference to your project
(You can find OPSSDK.dll at C:\Program Files\Ozeki\Ozeki Phone System\Examples\.NET API\OPSSDK.dll).
Login and connect
Create a new instance of OpsClient, and subscribe to the ErrorOccurred event. Your program will communicate with the Ozeki Phone System through this client. Try to login with the client into the running Ozeki Phone System, with the address of the server(ozekixepbx.ip) and a valid username, password combination.
If you are ready, try to get an existing API Extension, with the GetApiExtension method of the OpsClient. Read more about installation of API Extension.
Further steps
When you are ready with the initial steps above, subscribe the IncomingCall event of the apiExtension. This event will be triggered every time when the selected API Extension is called. In the mentioned event handler you will see the e.Item parameter, this parameter will be the call object. This call object has a CallState property, when the CallState is Ringing subscribe the CallStateChanged event of the call object and Accept the call.
The CallStateChanged event will be triggered when the call is going to another state . When the CallState is Answered, you can connect the devices to the call. When the call has ended, please do not forget to disconnect all devices from the call.
When the CallState is Answered, start and connect a TextToSpeech object to the call, that will read the "Hello" text to the caller. When the TextToSpeech is finished the call will hung up.
With these steps, you learned how to receive an incoming call, and say "Hello" to the caller.
Get the OPSSDK.dll
First you need to add the OPSSDK.dll reference to your project
(You can find OPSSDK.dll at C:\Program Files\Ozeki\Ozeki Phone System\Examples\.NET API\OPSSDK.dll).
Login and connect
Create a new instance of OpsClient, and subscribe to the ErrorOccurred event. Your program will communicate with the Ozeki Phone System through this client. Try to login with the client into the running Ozeki Phone System, with the address of the server(ozekixepbx.ip) and a valid username, password combination.
If you are ready, try to get an existing API Extension, with the GetApiExtension method of the OpsClient. Read more about installation of API Extension.
Further steps
When you are ready with the initial steps above, subscribe the IncomingCall event of the apiExtension. This event will be triggered every time when the selected API Extension is called. In the mentioned event handler you will see the e.Item parameter, this parameter will be the call object. This call object has a CallState property, when the CallState is Ringing subscribe the CallStateChanged event of the call object and Accept the call.
The CallStateChanged event will be triggered when the call is going to another state . When the CallState is Answered, you can connect the devices to the call. When the call has ended, please do not forget to disconnect all devices from the call.
When the CallState is Answered, start and connect a TextToSpeech object to the call, that will read the "Hello" text to the caller. When the TextToSpeech is finished the call will hung up.
With these steps, you learned how to receive an incoming call, and say "Hello" to the caller.
Next: Greet Caller by Name
Recommended reading
More information
- How to Say Hello with Ozeki Phone System VoIP PBX
- How to Greet Caller by Name with Ozeki Phone System VoIP PBX
- Play MP3 for caller with Ozeki Phone System VoIP PBX
- How to create an alarm system with Ozeki Phone System
- How to make outbound calls with Ozeki Phone System VoIP PBX
- How to send SMS messages with Ozeki Phone System VoIP PBX
- How to build an Autodialer in Ozeki Phone System VoIP PBX
- How to setup OzML Appointment Reminder in Ozeki Phone System VoIP PBX
- How to make Interactive Voice Response (IVR) in Ozeki using an OzML script
- How to display a HTML popup window with JavaScript API