通话过程控制

本章节介绍音频通话过程中网易云提供的各种控制功能。包括点对点通话的控制、多人会议的控制和通用控制。 点对点通话的控制包括发送通话控制信息、设置静音等 多人会议的控制包括改变自己在会议中的角色(互动者/观众) 通用控制包括是否接收某用户的音频等

点对点通话的控制

发送通话控制信息

API介绍

音频通话控制,点对点通话有效,异步回调onSessionControlResHandler 见NIMVChatDef.cs

API原型

public static bool ChatControl(long channel_id, NIMVChatControlType type);

File:NIMVChatAPI.cs

参数说明

|参数|类型|说明| |channel_id|long|音频通话通道id| |type|NIMVChatControlType|音视频通话控制类型,视频相关控制暂不支持 |

/** @enum NIMVChatControlType 音视频通话控制类型 */
enum NIMVChatControlType
{
    kNIMTagControlOpenAudio             = 1,    /**< 打开音频 */
    kNIMTagControlCloseAudio            = 2,    /**< 关闭音频 */
    kNIMTagControlOpenVideo             = 3,    /**< 打开视频 */
    kNIMTagControlCloseVideo            = 4,    /**< 关闭视频 */
    kNIMTagControlAudioToVideo          = 5,    /**< 请求从音频切换到视频 */
    kNIMTagControlAgreeAudioToVideo     = 6,    /**< 同意从音频切换到视频 */
    kNIMTagControlRejectAudioToVideo    = 7,    /**< 拒绝从音频切换到视频 */
    kNIMTagControlVideoToAudio          = 8,    /**< 从视频切换到音频 */
    kNIMTagControlBusyLine              = 9,    /**< 占线 */
    kNIMTagControlCamaraNotAvailable    = 10,   /**< 告诉对方自己的摄像头不可用 */
    kNIMTagControlEnterBackground       = 11,   /**< 告诉对方自已处于后台 */
    kNIMTagControlReceiveStartNotifyFeedback = 12,   /**< 告诉发送方自己已经收到请求了(用于通知发送方开始播放提示音) */
};
示例
//发占线通知
VChatAPI.ChatControl(channel_id, NIMVChatControlType.kNIMTagControlBusyLine);

收到通话控制信息回调

API介绍

收到对方发过来的通话控制信息,在SetSessionStatusCb接口设置的对象委托方法中返回,参数为onSessionControlNotify

API原型

public delegate void onSessionControlNotifyHandler(long channel_id,string uid, int type);

File:NIMVChatDef.cs

参数说明
参数 类型 说明
channel_id long 频道id
uid string 发起者账号
type int 控制类型
示例
NIMVChatSessionStatus vchat_session_;
/// 控制操作通知
vchat_session_.onSessionControlNotify = OnSessionControlNotifyCallback;
public void OnSessionControlNotifyCallback(long channel_id, string uid, int type)
{

}
VChatAPI.SetSessionStatusCb(vchat_session_);

设置静音

API介绍

设置音频静音

API原型

public static void SetAudioMute(bool muted);

File:NIMVChatAPI.cs

参数说明

|参数|类型|说明| |muted|bool|true 静音,false 不静音|

示例
void TestSetAudioMute(bool mute)
{
    VChatAPI.SetAudioMute(audio_mute);
}

获取音频静音状态

API介绍

获取音频静音状态

API原型

public static bool GetAudioMuteEnabled()

File:NIMVChatAPI.cs

示例
void test_mute_enabled()
{
    bool audio_mute = VChatAPI.GetAudioMuteEnabled();
}

多人通话的控制

改变自己在会议中的角色

API介绍

设置观众模式(多人模式下),全局有效(重新发起时也生效),观众模式能减少运行开销

API原型

public static void SetViewerMode(bool viewer);

File:NIMVChatAPI.cs

参数说明

|参数|类型|说明| |viewer|bool|viewer 是否观众模式.true为是。

示例
void DemoNIMVchatSetViewerMode(bool viewer)
{
     VChatAPI.SetViewerMode(viewer);
}

获取当前是否是观众模式

API介绍

获取当前是否是观众模式

API原型

public static bool GetViewerMode();

File:NIMVChatAPI.cs

示例
void TestViewerEnabled()
{
     Boolean ret = VChatAPI.GetViewerMode();
}

通用控制

指定某用户设置是否对其静音,是否接收视频数据

API介绍
API原型

public static void SetMemberInBlackList(string uid, bool add, bool audio, string json_extension, NIMVChatOptHandler cb);

File:NIMVChatAPI.cs

参数说明

|参数|类型|说明| |uid|string|成员account| |add|bool|true表示添加到黑名单,false表示从黑名单移除| |audio|bool|true表示音频黑名单,false表示视频黑名单,视频黑名单暂时无效| |json_extension|string|无效扩展字段| |cb|NIMVChatOptHandler| cb 结果回调见NIMVChatDef.cs,返回的json_extension无效|

示例
public void OnSetMemberInBlackListCallback(bool ret, int code, string json_extension)
{

}

void DemoTestNimVchatSetMemberInBlacklist(string uid,bool add,bool audio)
{
     VChatAPI.SetMemberInBlackList(uid, add, audio, "", OnSetMemberInBlackListCallback);
}