In attended call transfer, check if peer supports REPLACES header
This commit is contained in:
@ -1414,6 +1414,14 @@ JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_Api_call_1ismuted(
|
||||
return audio_ismuted(call_audio((struct call *)call));
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_com_tutpro_baresip_Api_call_1supported(
|
||||
JNIEnv *env, jobject obj, jlong call, jint tags)
|
||||
{
|
||||
(void)env;
|
||||
(void)obj;
|
||||
return call_supported((struct call *)call, tags);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_com_tutpro_baresip_Api_call_1transfer(
|
||||
JNIEnv *env, jobject obj, jlong call, jstring jPeer)
|
||||
{
|
||||
|
||||
@ -104,6 +104,8 @@ object Api {
|
||||
external fun call_replace_transfer(xfer_callp: Long, callp: Long): Boolean
|
||||
external fun call_peer_uri(callp: Long): String
|
||||
external fun call_diverter_uri(callp: Long): String
|
||||
|
||||
external fun call_supported(callp: Long, header: Int): Boolean
|
||||
external fun call_destroy(callp: Long)
|
||||
|
||||
external fun calls_mute(mute: Boolean)
|
||||
|
||||
@ -129,6 +129,8 @@ class Call(val callp: Long, val ua: UserAgent, val peerUri: String, val dir: Str
|
||||
|
||||
companion object {
|
||||
|
||||
const val REPLACES = 1
|
||||
|
||||
fun calls(): ArrayList<Call> {
|
||||
return BaresipService.calls
|
||||
}
|
||||
|
||||
@ -1579,13 +1579,20 @@ private fun CallRow(
|
||||
enabled = call.transferButtonEnabled.value,
|
||||
onClick = {
|
||||
if (call.onHoldCall != null) {
|
||||
val connection = ConnectionService.connections[call.callp]
|
||||
connection?.onHold()
|
||||
if (!call.executeTransfer()) {
|
||||
alertTitle.value = ctx.getString(R.string.notice)
|
||||
alertMessage.value = ctx.getString(R.string.transfer_failed)
|
||||
if (!Api.call_supported(call.callp, Call.REPLACES)) {
|
||||
alertTitle.value = ctx.getString(R.string.notice)
|
||||
alertMessage.value = ctx.getString(R.string.replaces_not_supported)
|
||||
showAlert.value = true
|
||||
}
|
||||
else {
|
||||
val connection = ConnectionService.connections[call.callp]
|
||||
connection?.onHold()
|
||||
if (!call.executeTransfer()) {
|
||||
alertTitle.value = ctx.getString(R.string.notice)
|
||||
alertMessage.value = ctx.getString(R.string.transfer_failed)
|
||||
showAlert.value = true
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
showTransferDialog = true
|
||||
|
||||
@ -521,6 +521,7 @@
|
||||
<string name="allow_video_send">Salli video videon lähetys puhelussa \'%1$s\'\?</string>
|
||||
<string name="allow_video_recv">Salli video videon vastaanotto puhelussa \'%1$s\'\?</string>
|
||||
<string name="call_is_on_hold">Puhelu on pidossa</string>
|
||||
<string name="call_is_connected">Puhelu on yhdistetty</string>
|
||||
<string name="rec_in_call">Tallennus voidaan asettaa päälle tai pois vain silloin, kun puhelu
|
||||
ei ole yhdistetty</string>
|
||||
<string name="call_transfer">Puhelun siirto</string>
|
||||
@ -530,6 +531,7 @@
|
||||
<string name="choose_destination_uri">Valitse kohteen URI</string>
|
||||
<string name="transfer">Siirto</string>
|
||||
<string name="transfer_failed">Siirto epäonnistui</string>
|
||||
<string name="replaces_not_supported">Toinen osapuoli ei tue REPLACES ominaisuutta</string>
|
||||
<string name="dtmf">DTMF</string>
|
||||
<string name="call_info">Puhelutiedot</string>
|
||||
<string name="call_info_not_available">Ei saatavilla</string>
|
||||
|
||||
@ -515,6 +515,7 @@
|
||||
<string name="choose_destination_uri">Choose destination URI</string>
|
||||
<string name="transfer">Transfer</string>
|
||||
<string name="transfer_failed">Transfer failed</string>
|
||||
<string name="replaces_not_supported">Peer does not support REPLACES feature</string>
|
||||
<string name="dtmf">DTMF</string>
|
||||
<string name="call_info">Call Info</string>
|
||||
<string name="call_info_not_available">No info available</string>
|
||||
|
||||
Reference in New Issue
Block a user