vonage的服务端程序,独立运行

hotfix/new-conversation
YCC 1 year ago
parent 01b8c2770e
commit acb135f5f1

@ -0,0 +1 @@
vonage的服务端用于生成jwt和应答语音视频请求

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCbwVZh35hHmN0G
FxzvwhPWHTn+V/8jxHWkXvUnQwigE4PW0upWs1qyh8OtqiYJFPWXqQVtgzW7BnkA
FlNTJNJ0UqtI9DME2rokXfi1xM2iMGPVQTLQTCATcwFq++VGjkv5BiO6yaTLeZmi
jAFanQzHrFO5EjWwMix19rNFHikQ+ZzuxkhO72Na2zH7DMaHgHpjiv5P+6IwwSLl
Tf90iA5cdzHZOT/Yg/vbkOzNp1OJ9+MTi6OQifKw7oaZSgPG13wknYYvKe2GQyEA
GFMtrzhbb/n9G8iWqP1ka3lLTLfP+MRZuxdcTbpCD3mFOIvjmv4Tp8CW3ZIq8+ri
ZXfR+RLzAgMBAAECggEAQhb1EP2f741xB7MJ/8Axy5JGN+Ld667injb+vkSm5cmy
ERcZAWYET6nlAY0nq4XduhcpqvDYfT3/XOacP7Tpqhsj/AZGmcI35tOLA5H5EV+I
FQafyZvrpmUPznYJMPmTShztT0Zdq0szQjI3Jtxp/lXkhqyv5E496GYgZm0oTr96
QCAefZgpbSvWCgqe2KBG4UhaeymYNwvtK4edsWs1c/l9E46CqUfm5Svw074T7kk4
ysG112oelCxqPpyyldFnfaYSwtDoKbC9ouVjWebMyLFztxMsTexlm93UxWoAC2hA
dkfqZ7fEZua74XRDbLY8nVeBTTy8mgXWwfRMChj/cQKBgQDSp+2jCCZ6pkozBINE
ZpFP8Oxfnt0qe6XdmP5X6w+63KmP6hs/Ee4q7naUSFY2p+BifoYVvpNwUmI98cbX
p4MSD+T1zu77sSM4hSmDAJrX/YLS+ABcAK+lzZlygJGLts8LqjfvH0r992zynuE1
eIuDp4x7SNnlZh3J7LBKBlPocQKBgQC9SCLjtCvprGmHVtLs/fu0PpYPhwZTk/Ik
RvgZt2hwJ77bU8qODNWQlgbOc0GDEHzbjLMZ5jwIGqoR6pKdAQUJ+e+f8tTUTdBV
qiBTDEX1DzECZPRcQihjX/DDdCXeOiUKnfjGCxFJ73DXLpZMGnK/A51ianlKNq9y
qv4od17DowKBgDRDvc3pQ8LCZz5pLDhYSk1PNRY0UCMuMmTchJ5Dj8+I1/kA2Gm5
hSHZsEnx+JHu7NkDEzlp4yLHDeDYj8EJqpdcoi3qfZisxlRLlZUPHVvhZgf5x/0L
nojAjgW+qF3FqXD3dpE5bl28eadoi++8TMEJXO1pkcY8o79pngN/tmnBAoGBAJ5R
V91dNd2deCbbWFEhnwaD0r/qEECX3lC5i4r2/UPR+rE4xJNL6NWmpsrHXGRjxgtd
A/EFwfCFXPrfWQI5eB2AEA2Y7qsk6ry8L41HFryCmFuIVVtVerKj7J2O6J2XxKO8
vffoCe3teFSDgvLkrFVYkKtgo1KPqvAeVbdDIOBBAoGAHlVrBW654zCTFQ1Ovxfn
IWr6xQVs7wJxwB39FM/tyaRgqND6YZwqzSB4Y5GX89K4iPgAKl9w2pLEJtkKb1Pb
ohkpZfQxuFHA2JA5gLLlOo/Dd0rGUxPNM7dgfNpirDpDEKscE+x0bYLz0rXG2ILb
/X6emIC7Xm9WJa9f2+3KRn0=
-----END PRIVATE KEY-----

@ -0,0 +1,86 @@
"use strict";
const express = require("express");
const fs = require("fs");
const { tokenGenerate } = require("@vonage/jwt");
const privateKey = fs.readFileSync("gh-private.key");
const aclPaths = {
paths: {
"/*/rtc/**": {},
"/*/users/**": {},
"/*/conversations/**": {},
"/*/sessions/**": {},
"/*/devices/**": {},
"/*/image/**": {},
"/*/media/**": {},
"/*/knocking/**": {},
"/*/legs/**": {},
},
};
const app = express();
app.use(express.json());
const vonageNumber = "12052553394"; //用于通话的号码,今后根据前端提交来做号码切换
//设置跨域访问
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "*");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
app.get("/voice/answer", (req, res) => {
console.log("NCCO request:");
console.log(` - callee: ${req.query.to}`);
console.log("---");
res.json([
{
action: "talk",
text: "Please wait while we connect you.",
},
{
action: "connect",
from: vonageNumber,
endpoint: [{ type: "phone", number: req.query.to }],
},
]);
});
app.get("/jwt", (req, res) => {
console.log("jwt Generate:");
const exp_time = new Date(Date.now() + 3 * 24 * 3600 * 1000);
const token=tokenGenerate("39f32a2a-e343-4ca0-9d92-5946573af5ea", privateKey, {
exp: Math.round(exp_time.getTime()/1000),
sub: "hainatravel",
acl: aclPaths,
})
console.log(Math.round(exp_time.getTime()/1000));
console.log(token);
console.log("---");
res.json({
token: token,
status: 200,
});
});
app.all("/voice/event", (req, res) => {
console.log("EVENT:");
console.dir(req.body);
console.log("---");
res.sendStatus(200);
});
app.all("/voice/fallback", (req, res) => {
console.log("fallback:");
console.dir(req.body);
console.dir(res);
console.log("---");
res.sendStatus(200);
});
app.listen(3009);

@ -0,0 +1,10 @@
{
"dependencies": {
"@vonage/jwt": "^1.10.0",
"express": "^4.19.2"
},
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
}
}
Loading…
Cancel
Save