gpt4 book ai didi

javascript - Node ARI 客户端 |连接方法不触发回调?

转载 作者:搜寻专家 更新时间:2023-10-31 22:49:47 25 4
gpt4 key购买 nike

所以,我开始使用 Asterisk Restful Interface (ARI)。

我已经创建了一个单独的 Express 应用程序来执行此操作。

我有一个正确配置的 Asterisk 13 实例正在运行。我知道这是因为当我在浏览器中访问 https://192.168.46.122:8088/ari/sounds 时,系统会提示我输入用户名和密码,输入后会返回一个有效的 JSON 对象返回预期的数据...

[
{
"id": "conf-now-unmuted",
"text": "The conference is now unmuted.",
"formats": [
{
"language": "en",
"format": "gsm"
}
]
},
{
"id": "vm-nomore",
"text": "No more messages.",
"formats": [
{
"language": "en",
"format": "gsm"
}
]
},
{
"id": "vm-review",
"text": "press 1 to accept this recording press 2 to listen to it press 3 to rerecord your message",
"formats": [
{
"language": "en",
"format": "gsm"
}
]
},
{
"id": "demo-echodone",
"text": "The echo test has been completed.",
"formats": [
{
"language": "en",
"format": "gsm"
}
]
},
{
"id": "confbridge-rest-talk-vol-out",
"text": "...to reset your speaking volume to the default level.",
"formats": [
{
"language": "en",
"format": "gsm"
}
]
}, ...... etc etc

在我的 app.js 文件中,我包含了以下代码...

...
var logger = require('morgan');
var client = require('ari-client');
var url = 'https://192.168.46.122:8088/ari/sounds';
var username = 'correct_username';
var password = 'correct_password';

client.connect(url, username, password, function (err, ari) {
console.log('HELLLLLLOOOOO!!');
});
...

问题是永远不会触发匿名回调。我从来没有看到“HELLLLLLOOOOO!!”

谁能阐明为什么/在什么情况下会发生这种情况?该模块是否存在任何可能导致此问题的已知错误?

如果您需要有关配置、环境等的更多信息,请告诉我。

谢谢大家

更新

以下评论...我尝试了以下方法:

client.connect(url, username, password)
.then(function(ari) {
console.log('HELLLLLLOOOOO!!');
})
.catch(function(err){
console.log('ERR: ' + err);
});

client.connect(url, username, password, function (err, ari) {
if(err) console.log(err);

console.log('HELLLLLLOOOOO!!');
});

没有错误,也没有“HELLLLLOOOOOO!!”在任何时候:-(

更新 2

刚刚访问了 /ari/api-docs/resources.json 并得到了以下响应...所以它看起来像是存在的。

{
"_copyright": "Copyright (C) 2012 - 2013, Digium, Inc.",
"_author": "David M. Lee, II <dlee@digium.com>",
"_svn_revision": "$Revision: 430337 $",
"apiVersion": "1.7.0",
"swaggerVersion": "1.1",
"basePath": "http://192.168.46.122:8088/ari",
"apis": [
{
"path": "/api-docs/asterisk.{format}",
"description": "Asterisk resources"
},
{
"path": "/api-docs/endpoints.{format}",
"description": "Endpoint resources"
},
{
"path": "/api-docs/channels.{format}",
"description": "Channel resources"
},
{
"path": "/api-docs/bridges.{format}",
"description": "Bridge resources"
},
{
"path": "/api-docs/recordings.{format}",
"description": "Recording resources"
},
{
"path": "/api-docs/sounds.{format}",
"description": "Sound resources"
},
{
"path": "/api-docs/playbacks.{format}",
"description": "Playback control resources"
},
{
"path": "/api-docs/deviceStates.{format}",
"description": "Device state resources"
},
{
"path": "/api-docs/mailboxes.{format}",
"description": "Mailboxes resources"
},
{
"path": "/api-docs/events.{format}",
"description": "WebSocket resource"
},
{
"path": "/api-docs/applications.{format}",
"description": "Stasis application resources"
}
]
}

我现在认为这可能是 SSL 问题?!

最佳答案

您的连接失败(原因如下所述),并且由于 node-ari-client 中的问题/即将推出的功能,失败的连接未被记录。

node-ari-client 模块使用 Swagger ,它期望加载描述 API 的 JSON 模式。在 node-ari-client 实现中,Swagger 期望在 %s//%s/ari/api-docs/resources.json 找到这个 JSON 模式。

因此,首先要检查的是它在您的应用程序中是否存在/是否可访问:

https://192.168.46.122:8088/ari/api-docs/resources.json

这可能有多种原因导致无法使用,但最有可能的问题是身份验证。您提到在访问您的 URL 时“提示您输入用户名和密码”。如果您的 JSON 架构(或任何其他需要在没有凭据的情况下访问的文件)落后于身份验证,您将需要重新考虑您的应用程序结构。

目前,如果在 Swagger 加载 JSON 模式之前出现连接失败,node-ari-client 将静默失败。有一个 Pull Request waiting 可以解决此问题并记录错误,但与此同时,您应该解决阻止连接的潜在问题。

如果您可以成功访问resources.json,则访问资源可能存在其他问题。您描述的 URL 正在通过 https 访问您的服务,但是您的 resources.json 文件告诉 Swagger 通过常规 http 访问它。要处理这个问题,您可以尝试:

更改 Swagger 架构中的 basePath 以使用 https:

"basePath": "https://192.168.46.122:8088/ari",

protocols 字段添加到您的 Swagger 模式:
"协议(protocol)":["http", "https"]

删除 https
为了发现 https 是否是连接问题的原因,这可能是一个不错的选择。只需保持 Swagger 架构不变,并尝试通过 http 访问/连接到您的服务。这有什么不同吗?

关于javascript - Node ARI 客户端 |连接方法不触发回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36652090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com