云课堂多人连麦互动

云课堂多人连麦

使用云课堂的连麦系统,可以实现讲师和学员之间的多人视频以及语音聊天互动。

登录云课堂客户端,然后点击上课按钮开启直播,这时候,讲师的摄像头画面就会出现在学员端的直播观看页里。

讲师点击客户端左下角的开启学员视频连线,这时,所有学员都能在观看页看到申请连线的提示,学员可以点击申请连线发出通话请求,讲师点击允许后,学员和讲师就可以进行视频聊天互动了。

学员可以点击摄像头或者麦克风按钮暂时关闭摄像头以及麦克风,也可以点击挂断按钮,结束与讲师的连线。

而讲师则可以控制所有人的摄像头以及麦克风连接,通过点击学员名称旁边的挂断按钮,可以切断该学员的连线。点击结束连线,则可以结束所有学员的视频连线。

语音连线和视频连线的操作类似,讲师点击开启学员语音连线,学员申请连线,成功连接后就可以进行语音聊天了。

 

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

查询日期区间内频道的最大历史并发人数

接口URL

https://api.polyv.net/live/v3/channel/statistics/get-max-history-viewer

接口说明

1、接口用于获取频道在某个日期区间的最大历史并发人数
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,为32位大写的MD5值
channelId int 频道号
startTime long 开始日期13位毫秒级时间戳
endTime long 结束日期13位毫秒级时间戳

响应成功JSON示例:

{
    "code": 200, 
    "status": "success", 
    "message": "", 
    "data": 0
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

频道号格式错误

{
  "code": 400, 
  "status": "error", 
  "message": "param is not digit: dsadasd", 
  "data": ""
}

日期范围错误

{
  "code": 400, 
  "status": "error", 
  "message": "date range error", 
  "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 日期区间内最大的历史并发人数

php请求示例

<?php
//引用config.php
include 'config.php';

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => 195770,
  'startTime' => 1546272000000,
  'endTime' => 1548950400000
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/channel/statistics/get-max-history-viewer?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 0);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

新版云直播导播台(视频)

视频说明

新版云直播导播台

1.使用导播台,可以实现多路直播画面的切换;
2.首先登录保利威视云直播后台;
3.添加直播源,三种添加方式(客户端推流、第三方推流、点播获取);
4.打开导播台界面,进行画面的切换;
5.使用完导播台以后,点击停止导播,然后关闭页面。

 

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

微信观看小程序SDK(推荐)

产品介绍

概述

POLYV微信观看小程序SDK以组件的方式提供了直播播放、点播播放、文档绘制等功能,供用户灵活组合自己的业务逻辑。

功能特性

功能 表述
视频 支持直播视频和点播视频观看,暂不支持点播加密视频
文档 PPT、白板以及画笔展示,暂不支持动效PPT
连麦 支持1V1语音和视频连麦功能
聊天 支持在线文本表情聊天

阅读对象

本文档为技术文档,需要阅读者:
- 拥有基本的小程序开发能力
- 准备接入polyv视频云或已接入的客户
- 对polyv视频云使用方法有基础的了解

使用步骤

开发准备

获取Access Key

登录保利威直播后台 - 云直播 - 开发设置 - 身份认证

微信接口白名单配置

request合法域名

https://document.polyv.net


https://api.polyv.net


https://player.polyv.net


https://router.polyv.net


https://livestatic.videocc.net


https://prtas.videocc.net


https://rtas.videocc.net


https://apichat.polyv.net


https://chat.polyv.net


https://miniapp.agoraio.cn


https://uni-webcollector.agora.io


https://live.polyv.cn


https://apollo.polyv.net


https://doc.polyv.net


https://doc-2.polyv.net

socket合法域名
wss://chat.polyv.net
wss://miniapp.agoraio.cn
downloadFile合法域名

https://doc.polyv.net


https://doc-2.polyv.net

配置微信直播权限

sdk播放直播使用了微信live-player,需要先通过类目审核,再在小程序管理后台,「开发」-「接口设置」中自助开通该组件权限。

使用方法

sdk提供了自定义组件polyv提供一套完整的业务逻辑,供用户开箱即用。也提供了player播放组件、ppt文档组件、chatroom聊天室组件等供用户灵活组合自己的业务逻辑。

在使用之前需要在app.js的onLaunch中调用setApp方法,传入polyv云直播的access key。

import plv from '*/polyv-sdk/index';
onLaunch() {
    plv.setApp({
        appId: '',
        appSecret: ''
    });
}
一、使用polyv组件。可参考demo的watch
  1. 拷贝sdk代码到自己的项目中,在使用到sdk的page的json文件中引入组件

    {
     "usingComponents": {
       "polyv": "*/polyv-sdk/components/polyv/polyv"
     }
    }
    
  2. 在wxml中使用polyv组件
    <view>
    <polyv />
    </view>
    
  3. 在页面的onload中调用init方法,在onUnload中调用destory方法

    init方法初始化观看,获取频道详情、初始化socket事件等。

    import plv from '*/polyv-sdk/index';
    // onLoad
    onLoad() {
       const options = {
         channelId: '', // 频道ID
         openId: '', // 用户openId
         userName: '', // 用户名
         avatarUrl: '' // 用户头像
       };
       plv.init(options);
    }
    // onUnload
    onUnload() {
      plv.destory();
    }
    
二、灵活组合组件。可参考demo的watch2
  1. 在使用到sdk的page的json文件中引入组件

    {
     "usingComponents": {
       "player": "*/polyv-sdk/components/player/player",
        "ppt": "*/polyv-sdk/components/ppt/ppt",
        ...
     }
    }
    
  2. 在wxml中使用组件,传入必要的参数。
    <view>
    <player
        videoOption="{{ videoOption }}"
           bind:onLiveStatusChange="playerLiveStatusChange"
       />
    <ppt />
    </view>
    
  3. 在页面的onload方法中调用init方法。
    import plv from '*/polyv-sdk/index';
    Page({ 
       onLoad() {
           const options = { ... };
           plv.init(options)
               .then(data => {
                const { detail, chat } = data;
                   // 处理业务逻辑
               })
               .catch(err => {
                // 异常处理
               });
       },
       onUnload() {
           plv.destory();
       }
    });
    

组件详解请参考demo中doc文件

demo

demo下载地址

change log

  • v 1.0.0

    初始版本

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

如何使用摄像机进行直播(视频)

视频说明

1.要实现摄像机的直播,有两种方案:第一种是编码器方案,第二种是采集卡方案。
2.如何进行摄像机直播:
(1)当然是准备直播需要的东西,包括一台高清摄像机,笔记本电脑,采集卡和连接线
(2)笔记本电脑连接网络,然后再使用直播频道号和密码登录直播客户端
(3)架设好摄像机,并根据情况调整机位和构图
(4)连接采集卡
(5)开启摄像机电源,然后在直播客户端添加摄像头直播源
(6)点击开始直播按钮发起直播

 

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

图文直播(视频)

图文直播

图文直播,以时间轴形式完整详细地记录整场活动,当用户错过直播的开始时间,中途进入直播,可以通过图文直播内容对前面的直播有一定的回顾了解。

1、图文设置:
头像设置--头像默认与基本信息设置的直播图标一致,可以点击上传头像,图片大小建议为140*140,支持jpg,jpeg,png格式,文件大小不超过2M
直播头衔--可自定义,例“管理员”“小编”“小助手"等
直播昵称--可自定义,例“小明”“小保"等
2、图文发布:
在文本框编辑好文字后,点击添加图片--选择本地图片进行上传,一次可以选择多张图片,最多可以上传9张,注意,单张图片要小于10M。
编辑好图文内容后,点击发布图文按钮,右侧预览区可实时预览最终效果。
直播编辑人员还可以将图文直播内容下载下来存档或经过二次编辑后发布到其他媒体平台。
除此之外,“图文直播”也可以自定义。点击“页面菜单设置”选项后,打开“菜单管理”,可对“图文直播”重命名。

 

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

添加点播视频作为直播回放

接口URL

http://api.polyv.net/live/v3/channel/playback/add

接口说明

1、作用:添加账号对应的点播视频作为直播频道下的回放视频。
2、接口支持https协议

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp string 当前13位毫秒级时间戳,3分钟内有效
channelId int 频道号
vid string 要添加为回放的的点播视频
sign string 签名,32位大写MD5值
setAsDefault string 添加到回放列表中的位置,Y (回放列表中置顶),N 回放列表中置底,不传默认为 N

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "videoId": "bd75a9c155",
        "videoPoolId": "8205ac89d3981cc8070eef326039527f",
        "userId": "8205ac89d3",
        "channelId": 108888,
        "title": "123",
        "firstImage": "8205ac89d3/f/8205ac89d3981cc8070eef326039527f_0.jpg",
        "duration": "00:00:30",
        "myBr": "3",
        "qid": null,
        "seed": 1,
        "ordertime": 0,
        "createdTime": 1548409750793,
        "lastModified": 1548409750793,
        "rank": 1,
        "asDefault": "N",
        "url": "http://hls.videocc.net/source/8205ac89d3/f/8205ac89d3981cc8070eef326039527f_3.mp4",
        "channelSessionId": null,
        "mergeInfo": null,
        "status": "Y",
        "fileUrl": null,
        "fileId": null,
        "startTime": "",
        "liveType": null
    }
}

字段说明

参数名 说明
status 响应状态
data 响应结果
message 异常错误信息 |
videoId 直播系统生成的id
videoPoolId 点播视频vid
userId 点播后台用户id
channelId 回放视频对应的直播频道id
title 视频标题
firstImage 视频首图
duration 视频长度
myBr 默认视频的播放清晰度,1为流畅,2为高清,3为超清
qid 访客信息收集id
seed 视频加密状态,1表示为加密状态,0为非加密
createdTime 添加为回放视频的日期
lastModified 视频最后修改日期
asDefault 是否为默认播放视频,值为Y/N(已弃用)
url 视频播放地址,注:如果视频为加密视频,则此地址无法访问
channelSessionId 用于PPT请求数据,与PPT直播的回放相关,普通直播回放值为null
mergeInfo 视频合并信息
startTime 直播开始时间
liveType 回放视频的场景类型

php请求示例

<?php

//引用config.php
include 'config.php';

//接口需要的参数(非sign)赋值
$appId = "xxxx";
$channelId = "xxx";
$vid = "xxxxxxxx";
$setAsDefault = "Y";

$params = array(
    'appId'=>$appId,
    'channelId'=>$channelId,
    'vid'=>$vid,
    'setAsDefault'=>$setAsDefault
  );

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/channel/playback/add?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 0);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

问卷设置

接口URL

https://api.polyv.net/live/v3/channel/questionnaire/add-edit-questionnaire

接口说明

1、接口用于编辑或添加问卷信息,为全量增加或修改
2、接口支持https

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,为32位大写的MD5值
channelId string 频道号
questionnaireId string 问卷id,修改问卷时需要
questionnaireTitle string 问卷标题
questions array 题目数组
questions[].questionId string 题目id,修改问卷时需要传
questions[].name string 题目
questions[].type string 题目类型,R为单选,C为多选,Q为问答
questions[].scoreEnabled string 题目是否需要评分,Y为需要,N为不需要
questions[].answer string 需要评分的选择题才有答案,填入对应选项序号,如:A或AB
questions[].required string 题目是否为必答,Y为必答,N为非必答
questions[].options array 题目为单选题或多选题为必填,选项数组下标0-9对应答案A-J
questions[].options[] string 选项描述

注:这里的channelId,appId,timestamp,sign必须通过url传参,json数据通过请求体传参,如:

https://api.polyv.net/live/v3/channel/questionnaire/add-edit-questionnaire?channelId={{channelId}}&appId={{appId}}&timestamp={{timestamp}}&sign={{sign}}

请求体json拼接

{
  "questionnaireId": "f8v53d83qe",
  "questionnaireTitle": "问卷标题", 
  "questions": [
    {
      "questionId": "feqfr13ftz", 
      "name": "题目名称", 
      "type": "R", 
      "answer": "A", 
      "scoreEnabled": "Y", 
      "score": 10, 
      "required": "Y", 
      "options": [
        "选项1", 
        "选项2", 
        "选项3"
      ]
    }
  ]
}

响应成功JSON示例:

{
  "code": 200, 
  "status": "success", 
  "message": "", 
  "data": {
    "questionnaireId": "f8v3visks0", 
    "questionIds": [
      "3ff650e4d4"
    ]
  }
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

频道号格式错误

{
  "code": 400, 
  "status": "error", 
  "message": "param is not digit: dsadasd", 
  "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 成功响应时为问卷和题目id
data.questionnaireId 问卷id
data.questionIds[] 题目的id数组

Java请求示例

import com.live.util.EncryptionUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Demo {

    private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(15000)
            .setConnectionRequestTimeout(15000).build();

    public static void main(String[] args) {

        String url = "https://api.polyv.net/live/v3/channel/questionnaire/add-edit-questionnaire";
        int channelId = 206204;
        String appId = "f018j7iirt";
        String key = "96651acd43e04cc8a94a1cfa60cec909";
        Map<String, String> map = new HashMap<>();
        long timestamp = System.currentTimeMillis();
        map.put("appId", appId);
        map.put("timestamp", String.valueOf(timestamp));
        map.put("channelId", String.valueOf(channelId));

        String sign = getSign(map, key);
        map.put("sign", sign);
        String body = "{\"questionnaireTitle\":\"问卷标题\",\"questions\":[{\"questionId\":null,\"name\":\"题目名称\"," +
                "\"type\":\"R\",\"answer\":\"A\",\"scoreEnabled\":\"Y\",\"score\":10,\"required\":\"Y\"," +
                "\"options\":[\"选项1\",\"选项2\",\"选项3\"]}],\"questionnaireId\":null}";
        String content = sendHttpPost(url, map, body);
        System.out.println(content);

    }

    /**
     * 发送 post请求
     * @param httpUrl 地址
     * @param maps 参数
     */
    public static String sendHttpPost(String httpUrl, Map<String, String> maps, String body) {
        StringBuilder url = new StringBuilder();
        url.append(httpUrl).append("?");
        for (Map.Entry<String, String> map : maps.entrySet()) {
            url.append(map.getKey()).append("=").append(map.getValue()).append("&");
        }
        String urlStr = url.toString().substring(0, url.length() - 1);
        // 创建httpPost
        HttpPost httpPost = new HttpPost(urlStr);
        try {
            StringEntity entity = new StringEntity(body, Charset.forName("UTF-8"));
            httpPost.setEntity(entity);
        } catch (Exception e) {
            // ...
        }
        return sendHttpPost(httpPost);
    }

    /**
     * 发送Post请求
     * @param httpPost
     * @return
     */
    private static String sendHttpPost(HttpPost httpPost) {
        CloseableHttpClient httpClient = null;
        CloseableHttpResponse response = null;
        HttpEntity entity;
        String responseContent = null;
        try {
            // 创建默认的httpClient实例.
            httpClient = HttpClients.createDefault();
            httpPost.setConfig(requestConfig);
            // 执行请求
            response = httpClient.execute(httpPost);
            entity = response.getEntity();
            responseContent = EntityUtils.toString(entity, "UTF-8");
        } catch (Exception e) {
            // ...
        } finally {
            try {
                // 关闭连接,释放资源
                if (response != null) {
                    response.close();
                }
                if (null != httpPost) {
                    httpPost.releaseConnection();
                }
                if (httpClient != null) {
                    httpClient.close();
                }
            } catch (IOException e) {
                // ...
            }
        }
        return responseContent;
    }

    /**
     * 根据map里的参数构建加密串
     * @param map
     * @param secretKey
     * @return
     */
    protected static String getSign(Map<String, String> map, String secretKey) {
        Map<String, String> params = paraFilter(map);
        // 处理参数,计算MD5哈希值
        String concatedStr = concatParams(params);
        String plain = secretKey + concatedStr + secretKey;
        String encrypted = EncryptionUtils.md5Hex(plain);

        // 32位大写MD5值
        return encrypted.toUpperCase();
    }

    /**
     * 对params根据key来排序并且以key1=value1&key2=value2的形式拼接起来
     * @param params
     * @return
     */
    private static String concatParams(Map<String, String> params) {
        List<String> keys = new ArrayList<>(params.keySet());
        Collections.sort(keys);

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < keys.size(); i++) {
            String key = keys.get(i);
            String value = params.get(key);

            sb.append(key).append(value);
        }

        return sb.toString();
    }

    /**
     * 除去数组中的空值和签名参数
     * @param sArray 签名参数组
     * @return 去掉空值与签名参数后的新签名参数组
     */
    private static Map<String, String> paraFilter(Map<String, String> sArray) {

        Map<String, String> result = new HashMap<>();

        if (sArray == null || sArray.size() <= 0) {
            return result;
        }

        for (String key : sArray.keySet()) {
            String value = sArray.get(key);
            if (value == null || value.equals("") || key.equalsIgnoreCase("sign")
                    || key.equalsIgnoreCase("sign_type")) {
                continue;
            }
            result.put(key, value);
        }

        return result;
    }

}

php请求示例

<?php
//引用config.php
include 'config.php';

$params = array(
    'appId' => $appId,
    'timestamp' => $timestamp,
    'channelId' => 206204
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "https://api.polyv.net/live/v3/channel/questionnaire/add-edit-questionnaire?".http_build_query($params);
$json = '{
  "questionnaireTitle": "问卷标题", 
  "questions": [
    {
      "questionId": null, 
      "name": "题目名称", 
      "type": "R", 
      "answer": "A", 
      "scoreEnabled": "Y", 
      "score": 10, 
      "required": "Y", 
      "options": [
        "选项1", 
        "选项2", 
        "选项3"
      ]
    }
  ], 
  "questionnaireId": null
}';

function post($url, $post_data = '', $timeout = 5){
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_POST, 1);
    if($post_data != ''){
       curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    }

    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($post_data)));
    $file_contents = curl_exec($ch);
    curl_close($ch);
    return $file_contents;
}

echo post($url,$json);
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

通过HTTP接口在聊天室发送消息

接口URL

http://api.polyv.net/live/v3/channel/chat/send-admin-msg

接口说明

可指定发言者的头像、头衔、昵称,无需连接聊天室,通过HTTP接口发送聊天文本内容

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp string 当前时间的秒级时间戳(13位)
sign string 签名,为32位大写的MD5值
channelId int 频道号
adminIndex int 管理员索引,可以指定多个管理员发送消息,默认只有一个管理员
msg string 发送的文本消息
pic string 管理员头像
nickName string 昵称,最大为8个长度,超出会被截断
actor string 头衔,最大为4个长度,超出会被截断,不传参数则表示无头衔

操作成功响应示例

{
  "code": 200,
  "status": "success",
  "message": "",
  "data": "发送成功"
}

操作失败响应示例

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

缺少参数 channelId

{
    "code": 400,
    "status": "error"
    "message": "param should not be empty: channelId",
    "data": ""
}

响应字段说明

名称 类型 说明
code string 响应代码,成功为200,失败为400,签名错误为403,异常错误500
status string 成功为success,失败为error
message string 错误时为错误提示消息

php请求示例

<?php
//引用config.php
include 'config.php';
$channelId = '123456';
$pic = 'http://xxxx.jpg';
$nickName = 'tom';
$msg = 'test';
$actor = 'admin';
$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => $channelId,
  'msg' => $msg,
  'pic' => $pic,
  'nickName' => $nickName,
  'actor' => $actor
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$url="http://api.polyv.net/live/v3/channel/chat/send-admin-msg?appId=$appId&timestamp=$timestamp&channelId=$channelId&sign=$sign&msg=$msg&pic=$pic&nickName=$nickName&actor=$actor";

$ch = curl_init() or die ( curl_error() );
curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 360);
$output = curl_exec ( $ch );
curl_close ( $ch );
print_r($output);
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

查询账号严禁词列表

接口URL

https://api.polyv.net/live/v3/user/badword/list

接口说明

1、接口用于获取账号下通用设置的严禁词列表
2、接口支持https

支持格式

JSON

请求方式

GET

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,为32位大写的MD5值

响应成功JSON示例:

{
  "code": 200, 
  "status": "success", 
  "message": "", 
  "data": [
    "2222", 
    "5555", 
    "yyyy", 
    "7777"
  ]
}

响应失败JSON示例:

未输入appId

{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}

appId不正确

{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}

时间戳错误

{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

频道号格式错误

{
  "code": 400, 
  "status": "error", 
  "message": "param is not digit: dsadasd", 
  "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 成功响应时为严禁词数组

php请求示例

?php
//引用config.php
include 'config.php';

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法
$params['sign'] = $sign;

$url = "http://api.polyv.net/live/v3/user/badword/list?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 0);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...