1.Microsoft Visual Studio Community 2017 を起動して、Visual C# の新規プロジェクトを作成します。ここでは分かりやすいコンソールアプリにします。
2.空のプロジェクトが作成されます。
3.空のプロジェクトが作成できたら、ソースファイルのある場所に移動して、前回作成した pjsua2.dll をこの中にコピーします。
4.既存の項目の追加で pjsua2.dll をプロジェクトに追加します。
5.pjsua2.dll が追加されました。
6.pjsua2.dll のプロパティを開いて、「ビルドアクション」を「コンテンツ」、「出力ディレクトリにコピー」を「常にコピーする」に設定します。
7.次にプロジェクトに新しいフォルダを作成し、名前を「pjsua2_libs」とします。(別に名前は何でもいいです。)
8.pjsua2_libsフォルダを選択した後、既存の項目の追加で、SWIGで作成したC#ファイルをすべて追加します。ファイルは、~\pjproject-2.8\pjsip-apps\src\swig\csharp にあります。
9.すべてのC#ファイルを選択して、「追加」をクリックします。
10.SWIGのすべてのC#ファイルが追加されました。
11.追加したC#ファイルのうち、pjsua_snd_dev_id.cs がエラーになるので、次のように修正します。
<修正前>
↓
<修正後>
public enum pjsua_snd_dev_id {
PJSUA_SND_DEFAULT_CAPTURE_DEV = -1,
PJSUA_SND_DEFAULT_PLAYBACK_DEV = -2,
PJSUA_SND_NO_DEV = -3,
PJSUA_SND_NULL_DEV = -99
}
12.program.cs にサンプルプログラム(このページの最後にあります)を貼り付けます。
13.ソリューションのクリーンを実行します。
14.ソリューションのリビルド(またはビルド)を実行します。
15.実行してみます。初回のみ、セキュリティー警告が出るので「アクセスを許可する」をクリックします。
16.実行中の画面です。何かキーを押すと終了します。(SIPのレジストエラーなのは、SIP接続情報がサンプルのままだからです。)
17.実際の program.cs (サンプルプログラム)です。
【ソース元】
https://www.pjsip.org/docs/book-latest/html/intro_pjsua2.html#id1
【PJSUA2のドキュメント】
https://www.pjsip.org/docs/book-latest/html/index.html
- 着信があると、onIncomingCall 関数が呼ばれます。
- 引数 prm に着信情報(相手電話番号など)が受け渡されます。
- onRegState 関数は、SIPレジスト処理の時に呼ばれます。
- override できる関数は他にもありますので、興味がある方は試してみてください。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using pjsua2xamarin.pjsua2;
namespace pjsua2_swig_test
{
class MyAccount : Account
{
public override void onIncomingCall(OnIncomingCallParam prm)
{
base.onIncomingCall(prm);
}
public override void onRegState(OnRegStateParam prm)
{
base.onRegState(prm);
}
};
class Program
{
static void Main(string[] args)
{
Endpoint ep = new Endpoint();
ep.libCreate();
// Initialize endpoint
EpConfig ep_cfg = new EpConfig();
ep.libInit(ep_cfg);
// Create SIP transport. Error handling sample is shown
TransportConfig sipTpConfig = new TransportConfig();
sipTpConfig.port = 5060;
ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_UDP, sipTpConfig);
// Start the library
ep.libStart();
AccountConfig acfg = new AccountConfig();
acfg.idUri = "sip:05012345678@ipphone.plala.or.jp";
acfg.regConfig.registrarUri = "sip:ipphone.plala.or.jp";
AuthCredInfo cred = new AuthCredInfo("digest", "*", "user_name", 0, "secret");
acfg.sipConfig.authCreds.Add(cred);
// Create the account
MyAccount acc = new MyAccount();
acc.create(acfg);
// Here we don't have anything else to do..
//Thread.Sleep(10000);
Console.ReadLine();
acc.Dispose();
ep.libDestroy();
ep.Dispose();
}
}
}





















