Много звонков на один и тот же номер с файлами .call - PullRequest
0 голосов
/ 30 сентября 2019

Мне нужна помощь, я создал приложение Nodejs для автоматического вызова каждые 15 секунд из Интернета с помощью Asterisk, однако, когда я создаю файлы .call и перемещаю их в папку / отключаю, некоторые номера вызываются несколько разхотя у меня MaxRetries: 1 вариант

const interval = setInterval(function () {

  Registers.findOneAndUpdate({state: "READY"}, {state: "SEND"}, (err, registerDB) => {

            if (err) {
                return res.status(400).json({
                    ok: false,
                    err
                });
            }

            if (registerDB) {
                if (typeCampaign === "audio") {
                    console.log("Audio Campaign selected");
                    fileContent = `Channel: SIP/outgoing/${registerDB.number} \nMaxRetries: 1 \nRetryTime: 60 \nWaitTime: 30 \nContext: automatic-calls \nExtension: ${extAudio} \nSetvar: NUMBER=${registerDB.number} \nSetvar: CAMPAIGN=${registerDB.campaign}`;
                } else if (typeCampaign === "dynamic") {
                    console.log("Dynamic Campaign selected");
                    fileContent = `Channel: SIP/outgoing/${registerDB.number} \nMaxRetries: 1 \nRetryTime: 60 \nWaitTime: 30 \nContext: automatic-calls \nExtension: ${extDynamic} \nSetvar: NAME=${registerDB.name} \nSetvar: NUMBER=${registerDB.number} \nSetvar: CAMPAIGN=${registerDB.campaign}`;
                }

                let oldPath = __dirname + sourcePath + registerDB.number + ".call";

                console.log(oldPath);
                let writeStream = fs.createWriteStream(__dirname + sourcePath + registerDB.number + ".call");
                writeStream.write(fileContent);

                fs.rename(oldPath, dstPath + registerDB.number + ".call", function (err) {
                    if (err) {
                        console.log(err);
                        return res.status(500).json({
                            ok: false,
                            message: "No se pudo generar la llaamda"
                        });
                    }
                });

                writeStream.on('finish', () => {
                    console.log("Archivo Creado");
                });
            } else {
                return res.status(200).json({
                    ok: true,
                    message: "Tarea Finalizada"
                });
            }
        });

        counter++;

        if (counter === parseInt(req.body.number)) {
            clearInterval(interval);
        }

    }, 15000);
});

1 Ответ

0 голосов
/ 01 октября 2019

Сначала я скажу вам, что написать собственное ядро ​​номеронабирателя - плохая идея даже для эксперта. Это требует особого опыта работы с набирающими ядрами, БУДЕТ много проблем. Рекомендуемый метод - использовать другое ядро, например vicidial.

Один вызов

MaxRetries: 0

Если вы используете

MaxRetries: 1

Это означает ДВА вызововсо стандартным временем повтора.

...