从 grandstream phone 获取 nodejs 中的呼叫状态
get call status in nodejs from grandstream phone
我正在尝试通过 nodejs 脚本获取 grandstream phone 的呼叫状态。但是我 运行 遇到了一些麻烦。第一个请求一切正常,并返回我已通过身份验证。第二个请求不顺利,它说我没有通过身份验证。
如何在第二个请求中设置来自第一个请求的凭据或 cookie,以便它知道我已登录?
第一个请求响应:
Response=Success
Message=Authentication accepted
Needchange=0
Ver=1.0.3.92
第一次请求响应headers:
{
'status': '200',
'content-length': '79',
'content-location': 'http://192.168.0.1/manager?action=login&username=XXXXXX&secret=XXXXXX',
'set-cookie': 'phonecookie="XXXXXX";HttpOnly, type=admin;, Version="1";, Max-Age=900',
'server': 'Enterprise Phone',
'pragma': 'no-cache',
'cache-control': 'no-cache',
'date': 'Wed, 14 Jun 2017 10:22:29 GMT',
'content-type': 'text/plain'
}
第二次请求响应:
Response=Error
Message=Authentication Required
App.js 脚本:
var fetch = require('node-fetch');
var host = '192.168.0.1';
var loginUrl = "/manager?action=login&username=XXXXXX&secret=XXXXXX";
var statusUrl = "/manager?action=lineStatus&line=0";
function makeRequest(url)
{
fetch("http://" + host + loginUrl).then(function(resultLogin) {
var resultAuth = result.body();
fetch("http://" + host + statusUrl, {method: 'GET').then(function(resultStatus) {
var resultStatus = resultStatus.body();
});
});
}
makeRequest();
使用fetch-cookie让node-fetch
根据url存储和发回cookie。
var fetch = require('fetch-cookie')(require('node-fetch'))
我正在尝试通过 nodejs 脚本获取 grandstream phone 的呼叫状态。但是我 运行 遇到了一些麻烦。第一个请求一切正常,并返回我已通过身份验证。第二个请求不顺利,它说我没有通过身份验证。
如何在第二个请求中设置来自第一个请求的凭据或 cookie,以便它知道我已登录?
第一个请求响应:
Response=Success
Message=Authentication accepted
Needchange=0
Ver=1.0.3.92
第一次请求响应headers:
{
'status': '200',
'content-length': '79',
'content-location': 'http://192.168.0.1/manager?action=login&username=XXXXXX&secret=XXXXXX',
'set-cookie': 'phonecookie="XXXXXX";HttpOnly, type=admin;, Version="1";, Max-Age=900',
'server': 'Enterprise Phone',
'pragma': 'no-cache',
'cache-control': 'no-cache',
'date': 'Wed, 14 Jun 2017 10:22:29 GMT',
'content-type': 'text/plain'
}
第二次请求响应:
Response=Error
Message=Authentication Required
App.js 脚本:
var fetch = require('node-fetch');
var host = '192.168.0.1';
var loginUrl = "/manager?action=login&username=XXXXXX&secret=XXXXXX";
var statusUrl = "/manager?action=lineStatus&line=0";
function makeRequest(url)
{
fetch("http://" + host + loginUrl).then(function(resultLogin) {
var resultAuth = result.body();
fetch("http://" + host + statusUrl, {method: 'GET').then(function(resultStatus) {
var resultStatus = resultStatus.body();
});
});
}
makeRequest();
使用fetch-cookie让node-fetch
根据url存储和发回cookie。
var fetch = require('fetch-cookie')(require('node-fetch'))