1
<?xml version="1.0" encoding="UTF-8" ?>
3
<node name="/callmanager-introspec" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
4
<interface name="org.sflphone.SFLphone.CallManager">
6
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
7
<p>The CallManager interface is used to manage call and conference related actions.</p>
8
<p>Since SFLphone-daemon supports multiple incoming/outgoing calls, any actions involving a specific call must address the method by the means of a unique callID.
9
SFLphone-clients is responsible for generating the callID on outgoing calls. Conversely, SFLphone-daemon will generate a unique callID for incoming calls.</p>
11
<method name="placeCall" tp:name-for-bindings="placeCall">
13
<p>This is the main method in order to place a new call. The call is registered with the daemon using this method.</p>
15
<arg type="s" name="accountID" direction="in">
17
The ID of the account with which you want to make a call. If the call is to be placed without any account by means of a SIP URI (i.e. sip:num@server), the "IP2IP_PROFILE" is passed as the accountID. For more details on accounts see the configuration manager interface.
20
<arg type="s" name="callID" direction="in">
22
The callID is a unique identifier that must be randomly generated on the client's side. Any subsequent actions refering to this call must use this callID.
25
<arg type="s" name="to" direction="in">
27
If bound to a VoIP account, then the argument is the phone number. In case of calls involving "IP2IP_PROFILE", a complete SIP URI must be specified.
30
<arg type="b" name="callSucceeded" direction="out"/>
33
<method name="refuse" tp:name-for-bindings="refuse">
35
Refuse an incoming call.
37
<arg type="s" name="callID" direction="in">
42
<arg type="b" name="refuseSucceeded" direction="out"/>
46
<method name="accept" tp:name-for-bindings="accept">
48
Answer an incoming call. Automatically puts the current call on HOLD.
50
<arg type="s" name="callID" direction="in">
55
<arg type="b" name="acceptSucceeded" direction="out"/>
58
<method name="hangUp" tp:name-for-bindings="hangUp">
60
Hangup a call in state "CURRENT" or "HOLD".
62
<arg type="s" name="callID" direction="in">
67
<arg type="b" name="hangupSucceeded" direction="out"/>
70
<method name="hangUpConference" tp:name-for-bindings="hangUpConference">
71
<tp:added version="0.9.7"/>
73
Hangup a conference, and every call participating to the conference.
75
<arg type="s" name="confID" direction="in">
77
The unique conference ID.
80
<arg type="b" name="hangupSucceeded" direction="out"/>
83
<method name="hold" tp:name-for-bindings="hold">
87
<arg type="s" name="callID" direction="in">
92
<arg type="b" name="holdSucceeded" direction="out"/>
95
<method name="unhold" tp:name-for-bindings="unhold">
97
Take a call off hold, and place this call in state CURRENT.
99
<arg type="s" name="callID" direction="in">
104
<arg type="b" name="unHoldSucceeded" direction="out"/>
107
<method name="transfer" tp:name-for-bindings="transfer">
109
Transfer a call to the given phone number.
111
<arg type="s" name="callID" direction="in">
116
<arg type="s" name="to" direction="in">
118
The phone number to which the call will be transferred.
121
<arg type="b" name="transferSucceeded" direction="out"/>
124
<method name="attendedTransfer" tp:name-for-bindings="attendedTransfer">
126
Perform an attended transfer on two calls.
128
<arg type="s" name="transferID" direction="in">
130
The callID of the call to be transfered.
133
<arg type="s" name="targetID" direction="in">
135
The callID of the target call.
138
<arg type="b" name="transferSucceeded" direction="out"/>
141
<method name="playDTMF" tp:name-for-bindings="playDTMF">
143
Dual-Tone multi-frequency. Tell the core to play dialtones. A SIP INFO message is sent to notify the server.
145
<arg type="s" name="key" direction="in">
147
Unicode character for pressed key.
152
<method name="startTone" tp:name-for-bindings="startTone">
154
Start audio stream and play tone.
156
<arg type="i" name="start" direction="in"/>
157
<arg type="i" name="type" direction="in"/>
160
<method name="setVolume" tp:name-for-bindings="setVolume">
162
<p>Sets the volume using a linear scale [0,100].</p>
163
<tp:rationale>Pulseaudio has its own mechanism to modify application volume. This method is enabled only if the ALSA API is used.</tp:rationale>
165
<arg type="s" name="device" direction="in">
167
The device: mic or speaker
170
<arg type="d" name="value" direction="in">
172
The volume value (between 0 and 100)
177
<method name="getVolume" tp:name-for-bindings="getVolume">
179
<p>Return the volume value of the given device on a linear scale [0,100].</p>
180
<tp:rationale>Only enabled if the ALSA API is used, Pulseaudio has its own mechanism to modify application volume.</tp:rationale>
182
<arg type="s" name="device" direction="in">
184
The device: mic or speaker
187
<arg type="d" name="value" direction="out">
189
The volume value (between 0 and 100)
194
<method name="joinParticipant" tp:name-for-bindings="joinParticipant">
195
<tp:added version="0.9.7"/>
197
<p>Join two participants together to create a 3-way conference including the current client.</p>
198
<tp:rationale>The signal <tp:member-ref>conferenceCreated</tp:member-ref> is emitted on success.</tp:rationale>
200
<arg type="s" name="sel_callID" direction="in"/>
201
<arg type="s" name="drag_callID" direction="in"/>
202
<arg type="b" name="joinSucceeded" direction="out"/>
205
<method name="createConfFromParticipantList" tp:name-for-bindings="createConfFromParticipantList">
206
<tp:added version="0.9.14"/>
208
<p>Create a conference from a list of participants</p>
209
<tp:rationale>The signal <tp:member-ref>conferenceCreated</tp:member-ref> is emitted on success.</tp:rationale>
211
<arg type="as" name="participants" direction="in"/>
214
<method name="addParticipant" tp:name-for-bindings="addParticipant">
215
<tp:added version="0.9.7"/>
217
<p>Join a new particiant to an existing conference.</p>
218
<tp:rationale>The signal <tp:member-ref>conferenceChanged</tp:member-ref> is emitted on success.</tp:rationale>
220
<arg type="s" name="callID" direction="in">
222
The ID of the call to add to the conference
225
<arg type="s" name="confID" direction="in">
227
An existing conference ID
230
<arg type="b" name="addSucceeded" direction="out"/>
233
<method name="addMainParticipant" tp:name-for-bindings="addMainParticipant">
234
<tp:added version="0.9.7"/>
236
<p>As the core can handle multiple calls and conferences, it may happen that the client's user leaves a conference to answer an incoming call or to start new calls. This method is used to reintroduce SFLphone-client's user into the conference.</p>
237
<p>Its put the current call on HOLD or detaches SFLphone-client's user from the another conference.</p>
239
<arg type="s" name="confID" direction="in">
241
An existing conference ID
244
<arg type="b" name="addSucceeded" direction="out"/>
247
<method name="detachParticipant" tp:name-for-bindings="detachParticipant">
248
<tp:added version="0.9.7"/>
250
Detach the given call from the conference. If only one participant is left, the conference is deleted and the signal <tp:member-ref>conferenceRemoved</tp:member-ref> is emited.
252
<arg type="s" name="callID" direction="in">
257
<arg type="b" name="detachSucceeded" direction="out"/>
260
<method name="joinConference" tp:name-for-bindings="joinConference">
261
<tp:added version="0.9.7"/>
263
Join two conferences together.
265
<arg type="s" name="sel_confID" direction="in"/>
266
<arg type="s" name="drag_confID" direction="in"/>
267
<arg type="b" name="joinSucceeded" direction="out"/>
270
<method name="getConferenceDetails" tp:name-for-bindings="getConferenceDetails">
271
<tp:added version="0.9.7"/>
273
Returns a hashtable containing conference details.
275
<arg type="s" name="callID" direction="in">
280
<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
281
<arg type="a{ss}" name="infos" direction="out">
283
A map containing the ID of the conferences
286
<li>ACTIVE_ATTACHED</li>
287
<li>ACTIVE_DETACHED</li>
294
<method name="getConferenceList" tp:name-for-bindings="getConferenceList">
295
<tp:added version="0.9.7"/>
297
Returns a list containing all active
299
<tp:rationale>To update client status, one should
300
use <tp:member-ref>getParticipantList</tp:member-ref>
301
with provided conference IDs.</tp:rationale>
303
<arg type="as" name="list" direction="out">
305
The list of conferences.
310
<method name="getConferenceId" tp:name-for-bindings="getConferenceId">
311
<tp:added version="1.1.0"/>
313
If thsi call participate to a conference, return the conference id.
314
Return an empty string elsewhere.
316
<arg type="s" name="callID" direction="in">
321
<arg type="s" name="confID" direction="out">
323
A string containing the conference ID, or an empty string.
328
<method name="setRecording" tp:name-for-bindings="setRecording">
330
Start recording a call.
332
<arg type="s" name="callID" direction="in">
334
The ID of the call to record.
339
<method name="getIsRecording" tp:name-for-bindings="getIsRecording">
341
Tells whether or not a call is being recorded.
343
<arg type="s" name="callID" direction="in">
348
<arg type="b" name="isRecording" direction="out">
350
Returns true is the call is being recorded. False otherwise.
355
<method name="recordPlaybackSeek" tp:name-for-bindings="recordPlaybackSeek">
357
<p>Sets the playback position using a linear scale [0,100].</p>
359
<arg type="d" name="value" direction="in"/>
362
<signal name="recordPlaybackFilepath" tp:name-for-bindings="recordPlaybackFilepath">
364
Once after starting recording for the first time, this signal is emited to
365
provide the recorded file path to client application.
367
<arg type="s" name="callID" />
368
<arg type="s" name="filepath"/>
371
<signal name="recordPlaybackStopped" tp:name-for-bindings="recordPlaybackStopped">
373
<arg type="s" name="filepath" />
376
<signal name="updatePlaybackScale" tp:name-for-bindings="updatePlaybackScale">
378
<arg type="i" name="position" />
379
<arg type="i" name="size" />
382
<method name="getCallDetails" tp:name-for-bindings="getCallDetails">
384
Get all the details about a specific call.
386
<arg type="s" name="callID" direction="in">
391
<annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="MapStringString"/>
392
<arg type="a{ss}" name="infos" direction="out" tp:type="String_String_Map">
393
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
394
<p>A map containing the call details: </p>
399
<li>DISPLAY_NAME</li>
408
<method name="getCallList" tp:name-for-bindings="getCallList">
410
Get the list of active calls.
411
<tp:rationale>To get the call details, iterate on the return value and call <tp:member-ref>getCallDetails</tp:member-ref> method.</tp:rationale>
413
<arg type="as" name="list" direction="out">
420
<method name="getCurrentAudioCodecName" tp:name-for-bindings="getCurrentAudioCodecName">
421
<arg type="s" name="callID" direction="in"/>
422
<arg type="s" name="codecName" direction="out"/>
425
<method name="sendTextMessage" tp:name-for-bindings="sendTextMessage">
427
Send a text message to the specified call
429
<arg type="s" name="callID" direction="in"/>
430
<arg type="s" name="message" direction="in"/>
433
<signal name="newCallCreated" tp:name-for-bindings="newCallCreated">
435
<p>Notify that a call has been created.</p>
436
<p>The callID generated by the daemon must be stored by the clients in order to address other actions for
437
this call. This signal is emitted when call haves been created by the daemon itself.</p>
438
<tp:rationale>The client must subscribe to this signal to handle calls created by other clients</tp:rationale>
440
<arg type="s" name="accountID">
442
The account ID of the call. Clients must notify the right account when receiving this signal.
445
<arg type="s" name="callID">
450
<arg type="s" name="to">
452
The SIP URI this call is trying to reach.
457
<signal name="incomingCall" tp:name-for-bindings="incomingCall">
459
<p>Notify an incoming call.</p>
460
<p>The callID generated by the daemon must be stored by the clients in order to address other action for
461
this call. This signal is emitted when we receive a call from a remote peer</p>
462
<tp:rationale>The client must subscribe to this signal to handle incoming calls.</tp:rationale>
464
<arg type="s" name="accountID">
466
The account ID of the callee. Clients must notify the right account when receiving this signal.
469
<arg type="s" name="callID">
474
<arg type="s" name="from">
476
The caller phone number.
481
<signal name="incomingMessage" tp:name-for-bindings="incomingMessage">
483
Notify clients that a new text message has been received.
485
<arg type="s" name="callID" />
486
<arg type="s" name="from" />
487
<arg type="s" name="message" />
490
<signal name="callStateChanged" tp:name-for-bindings="callStateChanged">
492
<p>Notify of a change in a call state.</p>
493
<p>The client must subscribe to this signal.</p>
495
<arg type="s" name="callID">
500
<arg type="s" name="state" >
502
The acceptable states are:
504
<li>INCOMING: Initial state of incoming calls</li>
505
<li>RINGING: Initial state of received outgoing call</li>
506
<li>CURRENT: The normal active state of an answered call</li>
507
<li>HUNGUP: Notify that the call has been hungup by peer</li>
509
<li>FAILURE: Error when processing a call</li>
517
<signal name="conferenceChanged" tp:name-for-bindings="conferenceChanged">
518
<tp:added version="0.9.7"/>
520
Notify of a change in the conferences state
522
<arg type="s" name="confID">
527
<arg type="s" name="state">
529
The acceptable states are:
531
<li>ACTIVE_ATTACHED: SFLphone user is
532
participating to this conference</li>
533
<li>ACTIVE_DETACHED: This situation can
534
occur if a call is received while
535
SFLphone user is participating to a
536
conference. In this case, one can leave
537
the conference by answering the
538
call. Other participants may continue
539
conferencing normally.</li>
540
<li>HOLD: Each call in this conference
541
is on state HOLD</li>
547
<method name="getParticipantList" tp:name-for-bindings="getParticipantList">
548
<tp:added version="0.9.7"/>
550
Get the call IDs of every participant to a given conference. The client should keep and update the list of participants.
552
<arg type="s" name="confID" direction="in">
557
<arg type="as" name="list" direction="out">
559
The list of the call IDs.
564
<signal name="conferenceCreated" tp:name-for-bindings="conferenceCreated">
565
<tp:added version="0.9.7"/>
567
Emited when a new conference is created. SFLphone-client is reponsible for storing the confID and call <tp:member-ref>getParticipantList</tp:member-ref> to update the display.
569
<arg type="s" name="confID">
576
<signal name="conferenceRemoved" tp:name-for-bindings="conferenceRemoved">
577
<tp:added version="0.9.7"/>
579
Emited when a new conference is remove. SFLphone-client should have kept a list of current participant in order to display modification.
581
<arg type="s" name="confID">
588
<method name="holdConference" tp:name-for-bindings="holdConference">
589
<tp:added version="0.9.7"/>
591
Hold every call which is participating in this conference.
593
<arg type="s" name="confID" direction="in">
598
<arg type="b" name="holdSucceeded" direction="out"/>
601
<method name="unholdConference" tp:name-for-bindings="unholdConference">
602
<tp:added version="0.9.7"/>
604
Hold off every call participating in this conference.
606
<arg type="s" name="confID" direction="in">
611
<arg type="b" name="unholdSucceeded" direction="out"/>
614
<method name="startRecordedFilePlayback" tp:name-for-bindings="startRecordedFilePlayback">
615
<tp:added version="0.9.14"/>
616
<arg type="s" name="filepath" direction="in"/>
617
<arg type="b" name="result" direction="out"/>
620
<method name="stopRecordedFilePlayback" tp:name-for-bindings="stopRecordedFilePlayback">
621
<tp:added version="0.9.14"/>
623
<arg type="s" name="filepath" direction="in"/>
626
<signal name="sipCallStateChanged" tp:name-for-bindings="sipCallStateChanged">
628
<p>Call state changed, SFLphone received a notification
629
from registrar concerning this call.</p>
631
<arg type="s" name="callID" />
635
<arg type="s" name="state" />
639
<arg type="i" name="code" />
641
The SIP or IAX2 message code
645
<signal name="registrationStateChanged" tp:name-for-bindings="registrationStateChanged">
647
<p>Account state changed, SFLphone received a notification
650
<arg type="s" name="accountID" >
655
<arg type="s" name="state">
660
<arg type="i" name="code">
662
The SIP or IAX2 message code
667
<signal name="voiceMailNotify" tp:name-for-bindings="voiceMailNotify">
669
Notify the clients of the voicemail number for a specific account, if applicable.
671
<arg type="s" name="accountID">
676
<arg type="i" name="count">
678
The number of waiting messages.
683
<signal name="volumeChanged" tp:name-for-bindings="volumeChanged">
685
<p>Notify clients of a volume level change.</p>
686
<p>This signal occurs only if ALSA is enabled since Pulseaudio streams are managed externally. </p>
688
<arg type="s" name="device">
690
The device: mic or speaker
693
<arg type="d" name="value">
700
<signal name="transferSucceeded" tp:name-for-bindings="transferSucceeded">
702
<p>Transfer has been successfully
703
processed. Client should remove transfered
704
call from call list as it is no longer
705
accessible in SFLphone-daemon.</p>
709
<signal name="transferFailed" tp:name-for-bindings="transferFailed">
711
<p>Transfer operation failed. Corresponding
712
call is no longer accessible in
717
<signal name="secureSdesOn" tp:name-for-bindings="secureSdesOn">
718
<tp:added version="0.9.7"/>
720
<p>Signal sent on SDES session success. Media transmission is encripted
721
for this call only. It does not apply for a conference.</p>
722
<p>A conference can be considered to be secured if and only if each
723
participant is secured.</p>
725
<arg type="s" name="callID"/>
728
<signal name="secureSdesOff" tp:name-for-bindings="secureSdesOff">
729
<tp:added version="0.9.7"/>
731
<p>Sinal sent to notify that SDES session failed.</p>
732
<p>Media transmission is not encrypted.</p>
734
<arg type="s" name="callID" />
737
<!-- ZRTP Methods and Signals -->
738
<signal name="secureZrtpOn" tp:name-for-bindings="secureZrtpOn">
739
<tp:added version="0.9.7"/>
740
<arg type="s" name="callID" />
741
<arg type="s" name="cipher" />
744
<signal name="secureZrtpOff" tp:name-for-bindings="secureZrtpOff">
745
<tp:added version="0.9.7"/>
746
<arg type="s" name="callID" />
749
<signal name="confirmGoClear" tp:name-for-bindings="confirmGoClear">
750
<tp:added version="0.9.7"/>
751
<arg type="s" name="callID" />
754
<signal name="zrtpNegotiationFailed" tp:name-for-bindings="zrtpNegotiationFailed">
755
<tp:added version="0.9.7"/>
756
<arg type="s" name="callID" />
757
<arg type="s" name="reason" />
758
<arg type="s" name="severity" />
761
<signal name="zrtpNotSuppOther" tp:name-for-bindings="zrtpNotSuppOther">
762
<tp:added version="0.9.7"/>
763
<arg type="s" name="callID" />
766
<signal name="showSAS" tp:name-for-bindings="showSAS">
767
<tp:added version="0.9.7"/>
768
<tp:added version="0.9.7"/>
769
<arg type="s" name="callID" />
770
<arg type="s" name="sas" />
771
<arg type="b" name="verified"/>
774
<method name="setSASVerified" tp:name-for-bindings="setSASVerified">
775
<tp:added version="0.9.7"/>
776
<arg type="s" name="callID" direction="in"/>
779
<method name="resetSASVerified" tp:name-for-bindings="resetSASVerified">
780
<tp:added version="0.9.7"/>
781
<arg type="s" name="callID" direction="in"/>
784
<method name="setConfirmGoClear" tp:name-for-bindings="setConfirmGoClear">
785
<tp:added version="0.9.7"/>
786
<arg type="s" name="callID" direction="in"/>
789
<method name="requestGoClear" tp:name-for-bindings="requestGoClear">
790
<tp:added version="0.9.7"/>
791
<arg type="s" name="callID" direction="in"/>
794
<method name="acceptEnrollment" tp:name-for-bindings="acceptEnrollment">
795
<tp:added version="0.9.7"/>
796
<arg type="s" name="callID" direction="in"/>
797
<arg type="b" name="accepted" direction="in"/>