用户事件中心(AEC)

AEC=agent eventCenter

1 AEC事件通知

您需要用自己熟悉的语言实现一个服务端接口,我们将其称之为AEC URL,这个URL用于接收starRTC服务器的事件通知。
starRTC服务器会向您的这个AEC URL发送HTTP POST请求来实现数据的交换,您的服务器收到starRTC服务器的事件通知后,需要根据相应的业务逻辑做出应答。

2 AEC处理逻辑

假设您在starRTC后台填的AEC URL为: https://www.yoursite.com/eventCenter.php
那么starRTC服务器在事件发生时将会发送data和sign两个参数到您的这个url:

https://www.yoursite.com/eventCenter.php?data=jsonStr&sign=xxx

其中,
data参数是您处理业务逻辑所需要的信息,是一个json字符串;
sign参数是data数据的签名,防止数据被篡改,生成签名的方法是:

base64(hmac_sha1(data, guardToken)); //对data数据计算签名,guardToken作为hmac_sha1算法的key值

您通过同样的方法对data进行签名计算后,和sign值进行对比,如果一致,则进入后续的业务逻辑处理环节。
处理完毕后,您需要返回如下特定格式的json字符串给starRTC服务器:

//status: 	1表示成功,0表示失败
//data: 根据不同事件的要求返回
{"status":"x","data":"xxxxx"}

AEC URL示例代码如下:https://github.com/starrtc/starrtc-server-api

3 接入验证

登录starRTC后台,填写AEC URL(填写之前请确保您实现了下面的接入验证逻辑)。

开发者提交AEC URL后,starRTC服务器会发送GET请求到您填写的URL上,

参数为:

https://www.yoursite.com/eventCenter.php?data={"action":"AEC_ACCESS_VALIDATION","echostr":"xxx", "timestamp":"xxx","nonce":"xxx"}&sign=xxx

开发者根据上面的AEC处理逻辑确认签名sign无误后,需要在返回的data字段中原样返回echostr参数的值,则接入生效,否则接入失败。

具体为:

1,接收data和sign参数,其中data为json格式;

2,根据上面生成签名的方法生成签名,并与接收到的sign进行对比,判断是否一致,如果一致,继续后续处理;

3,判断action的类型,如果action为AEC_ACCESS_VALIDATION,表示为接入验证,需要从data里面解析出echostr,然后通过上面要求的特定格式返回,如:

{"status":1,"data":"the value of echostr"}

4,响应其它action,如创建群的action为 AEC_GROUP_CREATE, 删除群的action为AEC_GROUP_DEL等等。