Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2015, 16:06   #1
Dj_DeVaIs
Пользователь
 
Регистрация: 07.03.2009
Сообщений: 52
По умолчанию sip телефония

Добрый день.

У меня такой вопрос.

Написал я sip телефон.

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Sipek.Common;
using Sipek.Common.CallControl;
using Sipek.Sip;

using iLLi.VOIP;

namespace freesoftphone
{
	public partial class Form1 : Form
	{
		#region properties
		CCallManager CallManager
		{
			get
			{
				return CCallManager.Instance; 
			}
		}

		private rc_PhoneCfg v_hPhoneCfg = new rc_PhoneCfg( );
		internal rc_PhoneCfg Config
		{
			get
			{
				return v_hPhoneCfg;
			}
		}

		private IStateMachine v_hCall = null;
		private IStateMachine v_hIncomingCall = null;
		#endregion

		public Form1( )
		{
			InitializeComponent( );

			CallManager.CallStateRefresh += new DCallStateRefresh( CallManager_CallStateRefresh );
			CallManager.IncomingCallNotification += new DIncomingCallNotification( CallManager_IncomingCallNotification );
			pjsipRegistrar.Instance.AccountStateChanged += new DAccountStateChanged( Instance_AccountStateChanged );

			CallManager.StackProxy = pjsipStackProxy.Instance;

			CallManager.Config = Config;
			pjsipStackProxy.Instance.Config = Config;
			pjsipRegistrar.Instance.Config = Config;

			CallManager.Initialize( );

			pjsipRegistrar.Instance.registerAccounts( );
		}

		#region callbacks
		void Instance_AccountStateChanged( Int32 iAccountId, Int32 iAccState )
		{
			if ( InvokeRequired )
				this.BeginInvoke( new DAccountStateChanged( OnRegistrationUpdate ), new Object[ ] { iAccountId, iAccState } );
			else
				OnRegistrationUpdate( iAccountId, iAccState );
		}

		void CallManager_CallStateRefresh( Int32 iSessionId )
		{
			if ( InvokeRequired )
				this.BeginInvoke( new DCallStateRefresh( OnStateUpdate ), new Object[ ] { iSessionId } );
			else
				OnStateUpdate( iSessionId );
		}

		void CallManager_IncomingCallNotification( Int32 iSessionId, String szNumber, String szInfo )
		{
			if ( InvokeRequired )
				this.BeginInvoke( new DIncomingCallNotification( OnIncomingCallNotification ), new Object[ ] { iSessionId, szNumber, szInfo } );
			else
				OnIncomingCallNotification( iSessionId, szNumber, szInfo );
		}
		#endregion

		#region synchronized callbacks
		private void OnRegistrationUpdate( Int32 iAccountId, Int32 iAccState )
		{
			cs_RegState.Text = iAccState.ToString( );
		}

		private void OnStateUpdate( Int32 iSessionId )
		{
			cs_CallState.Text = CallManager.getCall( iSessionId ).StateId.ToString( );
		}

		private void OnIncomingCallNotification( Int32 iSessionId, String szNumber, String szInfo )
		{
			v_hIncomingCall = CallManager.getCall( iSessionId );
			cs_CallState.Text = v_hIncomingCall.StateId.ToString( );
		}
		#endregion

		private void cs_MakeCall_Click( Object hSender, EventArgs hArgs )
		{
			v_hCall = CallManager.createOutboundCall( cs_Phone.Text );
		}

		private void cs_Release_Click( Object hSender, EventArgs hArgs )
		{
			cs_Phone.Clear( );
			CallManager.onUserRelease( v_hCall.Session );
            
		}

		private void cs_Answer_Click( Object hSender, EventArgs hArgs )
		{
			CallManager.onUserAnswer( v_hIncomingCall.Session );
		}

        private void button1_Click(Object hSender, EventArgs hArgs)
        {
            CallManager.onUserTransfer(v_hIncomingCall.Session, "801");	
            
        }
он работает все хорошо.
но есть такая проблема при первом вызове нет ни каких действий после нажатия на отмену и опять на вызов тогда только идет вызов. (при в ходе в программу сразу же)
2 проблема бывает такое что при звонке просто нет гудков в наушниках, но звонок проходит до конечного абонента.
в чем может быть проблема? и как можно это исправить?

схема такая:
ПО на C# + Elastix(Asterisk) + роутер + оператор связи (МТТ)
все порты открыты.
Dj_DeVaIs вне форума Ответить с цитированием
Старый 11.08.2016, 16:33   #2
fufel
Пользователь
 
Регистрация: 19.09.2007
Сообщений: 19
По умолчанию

Dj_DeVaIs
Привет, тебе удалось решить проблему?
У меня возникла другая проблема, я не могу принять звонок, можешь что то подсказать. А точнее у тебя работает?
fufel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интеграция SIP-телефонии на сайт. (Сервисы с SIP-телефонией) Mr_freeman PHP 12 18.08.2015 17:50
SIP телефония anonimus2014 Софт 3 05.11.2014 19:53
SIP телефония для дома — реализация, опыт, фишки Ципихович Эндрю Свободное общение 5 04.11.2012 19:26
SIP, VoIP-телефония. Звонок из сети на дом. телефон. Человек_Борща Работа с сетью в Delphi 0 13.07.2012 18:54