提交 4e7c22e9 authored 作者: João Mesquita's avatar João Mesquita

Fix DTMF for outbound calls, default settings on startup and dialplan correctly…

Fix DTMF for outbound calls, default settings on startup and dialplan correctly set. We must be ready to go and really test this thing.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16350 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 9952b6ef
......@@ -237,6 +237,7 @@ switch_status_t FSHost::processBlegEvent(switch_event_t * event, QString buuid)
{
case SWITCH_EVENT_CHANNEL_ANSWER:
{
/* When do we get here? */
emit answered(call);
break;
}
......@@ -254,7 +255,11 @@ switch_status_t FSHost::processBlegEvent(switch_event_t * event, QString buuid)
call.data()->setState(FSCOMM_CALL_STATE_RINGING);
emit ringing(call);
}
//printEventHeaders(event);
else if (QString(switch_event_get_header_nil(event, "Answer-State")) == "answered")
{
call.data()->setState(FSCOMM_CALL_STATE_ANSWERED);
emit answered(call);
}
break;
}
......
......@@ -300,6 +300,8 @@ void MainWindow::answered(QSharedPointer<Call> call)
}
}
}
ui->recoredCallBtn->setEnabled(true);
ui->recoredCallBtn->setChecked(false);
ui->dtmf0Btn->setEnabled(true);
ui->dtmf1Btn->setEnabled(true);
ui->dtmf2Btn->setEnabled(true);
......@@ -334,6 +336,8 @@ void MainWindow::callFailed(QSharedPointer<Call> call)
call.data()->getCause()));
call.data()->setActive(false);
/* TODO: Will cause problems if 2 calls are received at the same time */
ui->recoredCallBtn->setEnabled(false);
ui->recoredCallBtn->setChecked(false);
ui->answerBtn->setEnabled(false);
ui->hangupBtn->setEnabled(false);
ui->dtmf0Btn->setEnabled(false);
......@@ -369,6 +373,8 @@ void MainWindow::hungup(QSharedPointer<Call> call)
call.data()->setActive(false);
ui->textEdit->setText(tr("Call with %1 (%2) hungup.").arg(call.data()->getCidName(), call.data()->getCidNumber()));
/* TODO: Will cause problems if 2 calls are received at the same time */
ui->recoredCallBtn->setEnabled(false);
ui->recoredCallBtn->setChecked(false);
ui->answerBtn->setEnabled(false);
ui->hangupBtn->setEnabled(false);
ui->dtmf0Btn->setEnabled(false);
......
......@@ -41,6 +41,9 @@
</item>
<item>
<widget class="QPushButton" name="recoredCallBtn">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Record</string>
</property>
......@@ -273,7 +276,7 @@
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
......
......@@ -178,9 +178,103 @@ static switch_status_t do_config(void)
binding = NULL;
switch_xml_free(xml);
QSettings settings;
if (!settings.allKeys().contains("FreeSWITCH/conf"))
setQSettingsDefaults();
setGlobals();
return SWITCH_STATUS_SUCCESS;
}
void setQSettingsDefaults()
{
QSettings settings;
settings.beginGroup("FreeSWITCH/conf");
/* Globals config */
/* Sofia config */
settings.beginGroup("sofia.conf");
/* General Settings */
settings.beginGroup("global_settings/params");
settings.setValue("log-level", 0);
settings.setValue("auto-restart", "true");
settings.setValue("debug-presence", 0);
settings.endGroup();
/* Profile settings */
settings.beginGroup("profiles");
settings.beginGroup("profile");
settings.beginGroup("attrs");
settings.setValue("name", "softphone");
settings.endGroup();
settings.beginGroup("settings/params");
settings.setValue("user-agent-string", "FreeSWITCH/FSComm");
settings.setValue("debug", 0);
settings.setValue("sip-trace", "no");
settings.setValue("context", "public");
settings.setValue("rfc2833-pt", 101);
settings.setValue("sip-port", 12345);
settings.setValue("dialplan", "XML");
settings.setValue("dtmf-duration", 100);
settings.setValue("codec-prefs", "CELT@48000h,G7221@32000h,G7221@16000h,G722,PCMU,PCMA,GSM");
settings.setValue("use-rtp-timer", "true");
settings.setValue("rtp-timer-name", "soft");
settings.setValue("rtp-ip", "auto");
settings.setValue("sip-ip", "auto");
settings.setValue("hold-music", "local_stream://moh");
settings.setValue("apply-nat-acl", "rfc1918");
settings.setValue("manage-presence", "false");
settings.setValue("max-proceeding", 3);
settings.setValue("inbound-codec-negotiation", "generous");
settings.setValue("nonce-ttl", 60);
settings.setValue("auth-calls", "false");
settings.setValue("auth-all-packets", "false");
settings.setValue("ext-rtp-ip", "stun:stun.freeswitch.org");
settings.setValue("ext-sip-ip", "stun:stun.freeswitch.org");
settings.setValue("rtp-timeout-sec", 300);
settings.setValue("rtp-hold-timeout-sec", 1800);
settings.setValue("disable-register", "true");
settings.setValue("challenge-realm", "auto_from");
settings.endGroup();
settings.endGroup();
settings.endGroup();
settings.endGroup();
/* PortAudio config */
settings.beginGroup("portaudio.conf/settings/params");
settings.setValue("cid-name", "FSComm");
settings.setValue("cid-num", "00000000");
settings.setValue("ring-file", "tone_stream://%(2000,4000,440.0,480.0);loops=20");
settings.setValue("dialplan", "XML");
settings.setValue("ring-interval", 5);
settings.setValue("hold-file", "local_stream://moh");
settings.setValue("sample-rate", 48000);
settings.setValue("codec-ms", 10);
settings.setValue("indev", "");
settings.setValue("outdev", "");
settings.setValue("ringdev", "");
settings.endGroup();
/* Finish configs */
settings.endGroup();
}
void setGlobals()
{
QSettings settings;
settings.beginGroup("FreeSWITCH/conf/globals");
foreach (QString k, settings.childKeys())
{
switch_core_set_variable(k.toAscii().data(), settings.value(k).toByteArray().data());
}
settings.endGroup();
}
switch_status_t mod_qsettings_load(void)
{
......
......@@ -34,7 +34,7 @@
#include <QSettings>
#include <switch.h>
switch_status_t mod_qsettings_load(void);
class QXmlStreamWriter;
class XMLBinding
{
......@@ -48,4 +48,8 @@ private:
QSettings* _settings;
};
switch_status_t mod_qsettings_load(void);
void setQSettingsDefaults(void);
void setGlobals(void);
#endif // MOD_QSETTINGS_H
......@@ -25,7 +25,6 @@ void PrefAccounts::addAccountBtnClicked()
}
_accDlg = new AccountDialog(uuid);
connect(_accDlg, SIGNAL(gwAdded(QString)), this, SLOT(readConfig()));
connect(_accDlg, SIGNAL(gwAdded(QString)), this, SLOT(applyNewGw(QString)));
}
else
{
......@@ -44,26 +43,6 @@ void PrefAccounts::addAccountBtnClicked()
_accDlg->activateWindow();
}
void PrefAccounts::applyNewGw(QString accId)
{
QString res;
if (g_FSHost.sendCmd("sofia", "profile softphone rescan", &res) != SWITCH_STATUS_SUCCESS)
{
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not rescan the softphone profile.\n");
return;
}
if (_ui->accountsTable->rowCount() == 1)
{
_settings->beginGroup("FreeSWITCH/conf/globals");
_settings->setValue("default_gateway",_settings->value("/attrs/name"));
_settings->endGroup();
_settings->beginGroup(QString("FreeSWITCH/conf/sofia.conf/profiles/profile/gateways/%1/gateway").arg(accId));
switch_core_set_variable("default_gateway",_settings->value("/attrs/name").toByteArray().data());
_settings->endGroup();
}
}
void PrefAccounts::editAccountBtnClicked()
{
QList<QTableWidgetSelectionRange> selList = _ui->accountsTable->selectedRanges();
......@@ -113,6 +92,7 @@ void PrefAccounts::remAccountBtnClicked()
if (offset > 0)
{
QString res;
_settings->sync();
if (g_FSHost.sendCmd("sofia", "profile softphone rescan", &res) != SWITCH_STATUS_SUCCESS)
{
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not rescan the softphone profile.\n");
......@@ -153,4 +133,23 @@ void PrefAccounts::readConfig()
}
_settings->endGroup();
QString res;
_settings->sync();
if (g_FSHost.sendCmd("sofia", "profile softphone rescan", &res) != SWITCH_STATUS_SUCCESS)
{
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not rescan the softphone profile.\n");
return;
}
if (_ui->accountsTable->rowCount() == 1)
{
QString default_gateway = _settings->value(QString("/FreeSWITCH/conf/sofia.conf/profiles/profile/gateways/%1/gateway/attrs/name").arg(_ui->accountsTable->item(0,0)->data(Qt::UserRole).toString())).toString();
_settings->beginGroup("FreeSWITCH/conf/globals");
qDebug() << QString("Fucking gw: %1").arg(default_gateway);
_settings->setValue("default_gateway", default_gateway);
_settings->endGroup();
switch_core_set_variable("default_gateway", default_gateway.toAscii().data());
}
}
......@@ -20,7 +20,6 @@ private slots:
void addAccountBtnClicked();
void editAccountBtnClicked();
void remAccountBtnClicked();
void applyNewGw(QString);
private:
Ui::PrefDialog *_ui;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论