B站直播投票选项添加接口开发:基于哔哩哔哩-API收集整理的互动功能实现
直播互动是提升观众参与度的关键手段,而投票功能作为其中的重要组成部分,能够有效增强主播与观众之间的实时互动。本文将基于哔哩哔哩-API收集整理项目,详细介绍如何开发B站直播投票选项添加接口,帮助开发者快速实现这一互动功能。
接口开发准备
在进行B站直播投票选项添加接口开发前,需要先了解相关的API文档和项目结构。哔哩哔哩-API收集整理项目中,关于直播投票的详细信息可以在docs/live/live_vote.md中找到,该文档包含了查询投票信息、创建投票、中断投票等相关接口的定义和使用方法。
项目结构概览
哔哩哔哩-API收集整理项目的结构清晰,便于开发者查找和使用所需的API接口。其中,直播相关的API文档主要集中在docs/live/目录下,除了投票功能外,还有弹幕、礼物、直播数据等多个方面的接口定义,为直播功能的全面开发提供了丰富的资源。
创建直播投票接口详解
创建直播投票接口是实现投票选项添加功能的核心,通过该接口可以设置投票的问题、选项、持续时间等关键信息。
接口基本信息
创建直播投票接口的URL为https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/createVote,请求方法为POST,认证方式为Cookie(SESSDATA),鉴权方式要求Cookie中bili_jct的值正确并与csrf相同。
参数说明
该接口的正文参数(application/x-www-form-urlencoded)如下表所示:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| room_id | num | 直播间id | 必要 | 必须为登录信息对应的直播间 |
| duration | num | 持续时间 | 必要 | 必须为整数,目前范围0<d<10 |
| question | str | 投票问题 | 必要 | |
| option_a | str | 选项A | 必要 | |
| option_b | str | 选项B | 必要 | |
| template_id | num | 投票模板id | 非必要 | |
| live_key | str | 直播场次key | 非必要 | 需要更多信息 |
| sub_session_key | str | (?) | 非必要 | 需要更多信息 |
| csrf_token | str | CSRF Token(位于cookie) | 非必要 | |
| csrf | str | CSRF Token(位于cookie) | 必要 | |
| visit_id | str | (?) | 非必要 | 作用尚不明确 |
请求示例
以下是使用curl命令发送创建直播投票请求的示例:
curl 'https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/createVote' \
--data-urlencode 'room_id=3' \
--data-urlencode 'duration=1' \
--data-urlencode 'question=abcdef' \
--data-urlencode 'option_a=A' \
--data-urlencode 'option_b=B' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xxx'
响应示例
接口调用成功后,会返回如下响应:
{
"code": 0,
"message": "0",
"ttl": 1,
"data":{
"interaction_id":120008099262976
}
}
其中,interaction_id为创建的投票互动id,可用于后续的查询、中断等操作。
查询投票信息接口
创建投票后,需要能够查询投票的实时信息,以便了解投票的进行状态和结果。查询投票信息接口的URL为https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/votePanel,请求方法为GET,认证方式为Cookie(SESSDATA)。
参数说明
该接口的url参数如下:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| room_id | num | 直播间id | 必要 | 必须为登录信息对应的直播间 |
响应示例
查询投票信息接口的响应包含投票状态、问题、选项、持续时间等详细信息,示例如下:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"vote_info": {
"status": 4,
"question": "醒醒",
"options": [
{
"idx": 1,
"desc": "醒",
"percent": 0.5
},
{
"idx": 2,
"desc": "睡",
"percent": 0.5
}
],
"duration": 600000,
"result": 1,
"result_text": "平局",
"etime_str": "08-31 15:44",
"left_duration": 549660,
"interaction_id": 120122595433984
},
"templates": [
{
"template_id": 54339003518976,
"question": "哪边赢",
"option_a": "左",
"option_b": "右"
}
]
}
}
中断直播投票接口
当需要提前结束投票时,可以使用中断直播投票接口。该接口的URL为https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/terminateVote,请求方法为POST,认证方式为Cookie(SESSDATA),鉴权方式要求Cookie中bili_jct的值正确并与csrf相同。
参数说明
接口的正文参数如下:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| interaction_id | num | 投票互动id | 必要 | 必须为该登录信息创建的投票 |
| room_id | num | 直播间id | 必要 | 必须为登录信息对应的直播间 |
| csrf_token | str | CSRF Token(位于cookie) | 非必要 | |
| csrf | str | CSRF Token(位于cookie) | 必要 | |
| visit_id | str | (?) | 非必要 | 作用尚不明确 |
请求示例
curl 'https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/terminateVote' \
--data-urlencode 'interaction_id=120122595433984' \
--data-urlencode 'room_id=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx;bili_jct=xxx'
响应示例
{
"code": 0,
"message": "0",
"ttl": 1,
"data": null
}
投票状态说明
在投票信息和直播信息流DM_INTERACTION的类型101等地方会使用投票状态,目前已发现的投票状态如下表所示:
| 值 | 含义 | 备注 | | -- | ---- | ---- | | 0 | | 键名 NONE | | 1 | 等待审核 | 键名 WAITING_AUDIT | | 2 | 审核失败 | 键名 AUDIT_FAILED | | 4 | 投票进行中 | 键名 DURING | | 5 | 投票结束 | 键名 END | | 6 | | 键名 STOP |
直播投票主播侧界面
B站提供了专门的直播投票主播侧界面,URL为https://live.bilibili.com/p/html/live-app-guessing-game/anchor_vote.html,但直接访问此页面可能存在部分功能不可用的情况,需要传入直播间id作为URL查询参数。
通过以上接口的组合使用,开发者可以完整地实现B站直播投票选项添加及相关的互动功能,为直播增添更多趣味性和互动性。在实际开发过程中,还需要注意接口的认证和鉴权,确保请求的安全性和合法性。同时,参考docs/live/live_vote.md中的详细文档,可以获取更多关于接口的细节和最新更新信息。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



