Discussion:
Line Exposing Mechanism from TSP to TAPI
(too old to reply)
Ravi Kansangara
2013-12-06 13:16:48 UTC
Permalink
Hi,

I am developing TSP for PBX.

PBX is capable to serve approx. 2000 Lines.

According to me there are two possible ways by which i can expose these lines to TAPI.

--------------------------------------------------------------
1st Method :
--------------------------------------------------------------

I can provide No. of lines in function TSPI_providerEnumDevices.
i.e. *lpdwNumLines = 2000

(These are Max. no. of Lines supported by PBX & not the no. of lines currently active/accessible) Am i correct ?

If i am correct, in this way TAPISRV.exe will call function TSPI_lineGetDevCaps 2000 times to get line device capabilities. (Which lines should be obviously accessible from TSP & PBX side)

Also TSP should fill Device Id of each line to its structure got in TSPI_lineGetDevCaps function.

Here my problem is that before exposing 2000 lines from TSP to TAPI,
TSP must initialize them & get its information from PBX. That is after user set PBX configuration from TSP GUI, i have to stuck there till all the lines are exposed from PBX to TSP. Am i correct ?

--------------------------------------------------------------
2nd Method :
--------------------------------------------------------------
I can provide No. of lines in function TSPI_providerEnumDevices as 0.
i.e. *lpdwNumLines = 0;

So TAPISRV.exe won't call any functions regarding to line.

Now on each line exposed by PBX to TSP, TSP will send LINE_CREATE message to TAPI with one temporary Device Id.

In accordance to that TAPI will call function TSPI_providerCreateLineDevice
with temporary id given by TSP & new Device Id assigned by TAPI.

So here TSP can provide access of new line to TAPI. Also TSP should fill Device Id of each line to its structure in TSPI_providerCreateLineDevice function.

---------------------------------------------------------------

My Query is.....

Which design is better? Why?

According to me 2nd method is correct & suitable where lines are created &
removed dynamically. Am i correct ?

But i found few statements regarding to LINE_CREATE Message in MSDN
Microsoft as,

---------------------------------------------------------------
"Service providers can (and should) continue to make "static" device
allocations at start up when TAPI calls TSPI_providerEnumDevices. Creating
known devices using this mechanism, instead of always using LINE_CREATE,
involves lower overhead for applications (because they don't have to process
LINE_CREATE messages, updated device information, and so on). The
LINE_CREATE mechanism is intended to be used only if new devices are created
while the service provider is active (for example, between TSPI_providerInit
and TSPI_providerShutdown)."
---------------------------------------------------------------

According to these quotes i should not use LINE_CREATE Message for each line
to be exposed.

So Regarding to my requirement how should i expose lines from TSP to TAPI,
As i have not all data regarding to

Thanks.
Andreas Marschall [exMVP TAPI]
2014-02-05 07:38:50 UTC
Permalink
Post by Ravi Kansangara
So Regarding to my requirement how should i expose lines from TSP to TAPI,
As i have not all data regarding to
Ravi,

I would implement neither #1 nor #2 but a 3rd mechanism (kind of mix of #1 and #2).

As you have already noticed #1 is a costly implementation with the most possibly overhead.
YOu should definitely not expose all theoretically possible devices of your PBX but only those that actually are installed.

With #2 the issue is as MSDN alreday pointed out: many TAPI apps are simply not prepared to handle dynamically created device properly.

I suggest this approach (#3):
- on TSP installation let the user/admin specify which devices are to be exposed by your TSP
- it is helpful for this selection to query the PBX on TSP installation (1st TSP-UI start) about the actually present devices in PBX
- these user specified devices (sub-set of queried devices) should be statically presented on each TSP init
- new devices should dynamically be created on TSP run-time when they 1st occur (i.e. user specified in TSP-UI while TSP is running) but be presented statically afterwards
- so you need to store some information about the user-specified devices between TSP shutdown and its next init
--
Best Regards
Andreas Marschall
Microsoft MVP for TAPI / Windows SDK / Visual C++ 2003-2008
TAPI / TSP Developer and Tester
My TAPI and TSPI FAQ:
http://www.I-B-A-M.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm
My Toto® Tools (a collection of free, mostly TAPI related tools):
http://www.I-B-A-M.de/Andreas_Marschall's_Toto_Tools.htm
* Please post all messages and replies to the group / forum so all may
* benefit from the discussion. Private mail is usually not replied to.
* This posting is provided "AS IS" with no warranties, and confers no rights.
Ravi Kansangara
2014-02-09 13:56:30 UTC
Permalink
Post by Andreas Marschall [exMVP TAPI]
Post by Ravi Kansangara
So Regarding to my requirement how should i expose lines from TSP to TAPI,
As i have not all data regarding to
Ravi,
I would implement neither #1 nor #2 but a 3rd mechanism (kind of mix of #1 and #2).
As you have already noticed #1 is a costly implementation with the most possibly overhead.
YOu should definitely not expose all theoretically possible devices of your PBX but only those that actually are installed.
With #2 the issue is as MSDN alreday pointed out: many TAPI apps are simply not prepared to handle dynamically created device properly.
- on TSP installation let the user/admin specify which devices are to be exposed by your TSP
Actually devices are depends on different types of PBX models which have different no./type of devices. So it is not possible to decide devices to be exposed at installation time.
Post by Andreas Marschall [exMVP TAPI]
- it is helpful for this selection to query the PBX on TSP installation (1st TSP-UI start) about the actually present devices in PBX
1. Assume that my TSP is started but my PBX is not started yet.

So for how much time i can wait in function TSPI_providerEnumDevices to
provide no. of device that are connected to PBX.

case 1: Wait for infinite time.
That is not Possible.

case 2: Wait for some time & if PBX is not responding, provide 0(zero)
devices in TSPI_providerEnumDevices. Afterwards provide all devices
with LINE_CREATE when PBX is started.

Here case 1 is not possible & case 2 is same as 2nd method of my
previous post.

NOTE: I have seen in Panasonic KX-TDE100 TSP that PBX must be started before TSP get initialized. If PBX starts after Initialization of TSP, TSP doesn't expose any devices to TAPI. One has to Add & Remove TSP again.
Post by Andreas Marschall [exMVP TAPI]
- these user specified devices (sub-set of queried devices) should be statically presented on each TSP init
Actually my PBX supports all devices statistically & dynamically both.
Means one can start PBX without any devices & afterwards insert all cards (hardware of different types of devices) without power off system.

So at that time i need to use LINE_CREATE message.
Post by Andreas Marschall [exMVP TAPI]
- new devices should dynamically be created on TSP run-time when they 1st occur (i.e. user specified in TSP-UI while TSP is running) but be presented statically afterwards
- so you need to store some information about the user-specified devices between TSP shutdown and its next init
You want to tell that...

1. Assume that my TSP has exposed 100 lines of PBX-(A).
2. Now TSP is shut down & Init Again. (PBX-(A) is also powered off)
3. TSP tries to connect to PBX-(A), but it can't.
4. So TSP will read previously stored configuration and exposed 100 lines.

** Is this meaningful that user is seeing 100 devices that are actually not
present(accessible) anymore.

** Assume that TSP has exposed 100 devices & trying to connect to PBX in
background (In Thread).

Now new PBX-(B) (not PBX-(A)) has responded TSP but 100 devices exposed were
of PBX-(A).

None of the device is compatible or matched with PBX-(B).

** So what should be next action.

5. Remove 100 lines by LINE_REMOVE message.
6. Again get statically connected devices from PBX-(B) & exposed them. What
happens if no devices are connected to PBX-(B) yet......
(Again LINE_CREATE for all devices of PBX-(B))


In short I want to fulfill following things if possible.

1. Sequence of Initialization of TSP & PBX should not matter.
2. User has to add TSP only once (During Installation).
3. During run time, If someone Connected Other PBX (Other Model) with Same
IP & Port to TSP, that should be detected run time. Also all devices should
be Removed & new devices should be connected automatically using
LINE_REMOVE & LINE_CREATE respectively.

Currently I am going Ahead with 0(zero) lines in TSPI_providerEnumDevice() & expose each device with LINE_CREATE.

So during testing i have to Open one TAPI application (to initialize my TSP) then Open same TAPI application again without closing old one (to expose my devices).

Any suggestions.....
Post by Andreas Marschall [exMVP TAPI]
--
Best Regards
Andreas Marschall
Microsoft MVP for TAPI / Windows SDK / Visual C++ 2003-2008
TAPI / TSP Developer and Tester
http://www.I-B-A-M.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm
http://www.I-B-A-M.de/Andreas_Marschall's_Toto_Tools.htm
* Please post all messages and replies to the group / forum so all may
* benefit from the discussion. Private mail is usually not replied to.
* This posting is provided "AS IS" with no warranties, and confers no rights.
Andreas Marschall [exMVP TAPI]
2014-02-20 03:14:12 UTC
Permalink
Post by Ravi Kansangara
Actually devices are depends on different types of PBX models which have different no./type of devices. So it is not possible to decide devices to be exposed at installation time.
Ravi,
what about letting the admin select the PBX type (from a given list) at installation?
Post by Ravi Kansangara
1. Assume that my TSP is started but my PBX is not started yet.
So for how much time i can wait in function TSPI_providerEnumDevices to
provide no. of device that are connected to PBX.
case 1: Wait for infinite time.
That is not Possible.
case 2: Wait for some time & if PBX is not responding, provide 0(zero)
devices in TSPI_providerEnumDevices. Afterwards provide all devices
with LINE_CREATE when PBX is started.
Here case 1 is not possible & case 2 is same as 2nd method of my
previous post.
Since TSPI_providerEnumDevices() and TSPI_providerInit() are synchronous TSPI functions you are required to return as fast as possible!
Neither case 1 nor 2 is acceptable if the time out is noticable to a user initializing TAPI,
e.g. more than a second for TSPI_providerEnumDevices() + TSPI_providerInit() to complete isn't acceptable IMO.
So trying to establish a TCP/IP connection to the PBX and just waiting for the default TCP/IP timeout of 5*3s is by far inacceptable if PBX is not online.
Post by Ravi Kansangara
NOTE: I have seen in Panasonic KX-TDE100 TSP that PBX must be started before TSP get initialized. If PBX starts after Initialization of TSP, TSP doesn't expose any devices to TAPI. One has to Add & Remove TSP again.
IMO it's a very poor TSP design if it is required to re-install the TSP just because the corresponding PBX is offline at TSP-init.
Post by Ravi Kansangara
Actually my PBX supports all devices statistically & dynamically both.
Means one can start PBX without any devices & afterwards insert all cards (hardware of different types of devices) without power off system.
So at that time i need to use LINE_CREATE message.
Yes, all devices dynamically created at PBX can only be reported via LINE_CREATE.
Post by Ravi Kansangara
You want to tell that...
1. Assume that my TSP has exposed 100 lines of PBX-(A).
2. Now TSP is shut down & Init Again. (PBX-(A) is also powered off)
3. TSP tries to connect to PBX-(A), but it can't.
4. So TSP will read previously stored configuration and exposed 100 lines.
** Is this meaningful that user is seeing 100 devices that are actually not
present(accessible) anymore.
Not "anymore" but only temporarily not available (till PBX is online again).

You can handle this with LINEDEVSTATUS.dwDevStatusFlags using:
LINEDEVSTATUSFLAGS_CONNECTED
LINEDEVSTATUSFLAGS_INSERVICE
and LINE_LINEDEVSTATE messages with LineDevState=
LINEDEVSTATE_CONNECTED
LINEDEVSTATE_DISCONNECTED
LINEDEVSTATE_INSERVICE
LINEDEVSTATE_OUTOFSERVICE
Post by Ravi Kansangara
** Assume that TSP has exposed 100 devices & trying to connect to PBX in
background (In Thread).
Now new PBX-(B) (not PBX-(A)) has responded TSP but 100 devices exposed were
of PBX-(A).
None of the device is compatible or matched with PBX-(B).
Is your TSP able to distinguish between PBX-A and -B ?
Post by Ravi Kansangara
** So what should be next action.
5. Remove 100 lines by LINE_REMOVE message.
6. Again get statically connected devices from PBX-(B) & exposed them. What
happens if no devices are connected to PBX-(B) yet......
(Again LINE_CREATE for all devices of PBX-(B))
I would only remove lines from static TSP configuration if the corresponding PBX will be permanently off.
This removal could be done manually by admin in the TSP-UI (in addition to the automatic removal mentioned below).
New devices discovered at run-time should be dynamically created but stored statically for later usage.
Post by Ravi Kansangara
In short I want to fulfill following things if possible.
1. Sequence of Initialization of TSP & PBX should not matter.
2. User has to add TSP only once (During Installation).
3. During run time, If someone Connected Other PBX (Other Model) with Same
IP & Port to TSP, that should be detected run time. Also all devices should
be Removed & new devices should be connected automatically using
LINE_REMOVE & LINE_CREATE respectively.
If your TSP can detect a PBX change at a IP-address/port then I'd say that this can be regarded as a permanante removal of the old PBX.
In this case the TSP should automatically LINE_REVOVE the corresponding lines and remove them from its static config too.
Post by Ravi Kansangara
Currently I am going Ahead with 0(zero) lines in TSPI_providerEnumDevice() & expose each device with LINE_CREATE.
Ok, but please note: many TAPI apps are not prepared to handle dynamically created device properly!
Post by Ravi Kansangara
So during testing i have to Open one TAPI application (to initialize my TSP) then Open same TAPI application again without closing old one (to expose my devices).
When testing with MS TAPI Browser TB20.exe you will see the LINE_CREATE messages as device are created by your TSP.
So there is no need for two instances.
--
Best Regards
Andreas Marschall
Microsoft MVP for TAPI / Windows SDK / Visual C++ 2003-2008
TAPI / TSP Developer and Tester
My TAPI and TSPI FAQ:
http://www.I-B-A-M.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm
My Toto® Tools (a collection of free, mostly TAPI related tools):
http://www.I-B-A-M.de/Andreas_Marschall's_Toto_Tools.htm
* Please post all messages and replies to the group / forum so all may
* benefit from the discussion. Private mail is usually not replied to.
* This posting is provided "AS IS" with no warranties, and confers no rights.
Ravi Kansangara
2014-02-21 05:56:26 UTC
Permalink
Post by Andreas Marschall [exMVP TAPI]
Post by Ravi Kansangara
Actually devices are depends on different types of PBX models which have different no./type of devices. So it is not possible to decide devices to be exposed at installation time.
Ravi,
what about letting the admin select the PBX type (from a given list) at installation?
Actually i don't want to bind with the negotiation with PBX type as my TSP will work for all types (Versions) of PBX.
Post by Andreas Marschall [exMVP TAPI]
Post by Ravi Kansangara
1. Assume that my TSP is started but my PBX is not started yet.
So for how much time i can wait in function TSPI_providerEnumDevices to
provide no. of device that are connected to PBX.
case 1: Wait for infinite time.
That is not Possible.
case 2: Wait for some time & if PBX is not responding, provide 0(zero)
devices in TSPI_providerEnumDevices. Afterwards provide all devices
with LINE_CREATE when PBX is started.
Here case 1 is not possible & case 2 is same as 2nd method of my
previous post.
Since TSPI_providerEnumDevices() and TSPI_providerInit() are synchronous TSPI functions you are required to return as fast as possible!
Neither case 1 nor 2 is acceptable if the time out is noticable to a user initializing TAPI,
e.g. more than a second for TSPI_providerEnumDevices() + TSPI_providerInit() to complete isn't acceptable IMO.
So trying to establish a TCP/IP connection to the PBX and just waiting for the default TCP/IP timeout of 5*3s is by far inacceptable if PBX is not online.
Yes Currently according my implementation my TSP try to connect with PBX with default timeout of TCP.

If connection fails, TSP tries to connect in background at programmed interval.
Post by Andreas Marschall [exMVP TAPI]
Post by Ravi Kansangara
NOTE: I have seen in Panasonic KX-TDE100 TSP that PBX must be started before TSP get initialized. If PBX starts after Initialization of TSP, TSP doesn't expose any devices to TAPI. One has to Add & Remove TSP again.
IMO it's a very poor TSP design if it is required to re-install the TSP just because the corresponding PBX is offline at TSP-init.
Post by Ravi Kansangara
Actually my PBX supports all devices statistically & dynamically both.
Means one can start PBX without any devices & afterwards insert all cards (hardware of different types of devices) without power off system.
So at that time i need to use LINE_CREATE message.
Yes, all devices dynamically created at PBX can only be reported via LINE_CREATE.
Post by Ravi Kansangara
You want to tell that...
1. Assume that my TSP has exposed 100 lines of PBX-(A).
2. Now TSP is shut down & Init Again. (PBX-(A) is also powered off)
3. TSP tries to connect to PBX-(A), but it can't.
4. So TSP will read previously stored configuration and exposed 100 lines.
** Is this meaningful that user is seeing 100 devices that are actually not
present(accessible) anymore.
Not "anymore" but only temporarily not available (till PBX is online again).
LINEDEVSTATUSFLAGS_CONNECTED
LINEDEVSTATUSFLAGS_INSERVICE
and LINE_LINEDEVSTATE messages with LineDevState=
LINEDEVSTATE_CONNECTED
LINEDEVSTATE_DISCONNECTED
LINEDEVSTATE_INSERVICE
LINEDEVSTATE_OUTOFSERVICE
Digital Phones of my PBX are works with this method.

When Hardware Card for Digital Phone is inserted, All devices are exported with LINEDEVSTATE_INSERVICE & when Digital Phone is actually connected to Hardware Slot, Status is changed to LINEDEVSTATE_CONNECTED.
Post by Andreas Marschall [exMVP TAPI]
Post by Ravi Kansangara
** Assume that TSP has exposed 100 devices & trying to connect to PBX in
background (In Thread).
Now new PBX-(B) (not PBX-(A)) has responded TSP but 100 devices exposed were
of PBX-(A).
None of the device is compatible or matched with PBX-(B).
Is your TSP able to distinguish between PBX-A and -B ?
I can add this logic to my PBX & TSP but as i told you i don't want to bind with that Negotiation. As Functionality of all models of PBX is same, just capacity & some features are different.
Post by Andreas Marschall [exMVP TAPI]
Post by Ravi Kansangara
** So what should be next action.
5. Remove 100 lines by LINE_REMOVE message.
6. Again get statically connected devices from PBX-(B) & exposed them. What
happens if no devices are connected to PBX-(B) yet......
(Again LINE_CREATE for all devices of PBX-(B))
I would only remove lines from static TSP configuration if the corresponding PBX will be permanently off.
This removal could be done manually by admin in the TSP-UI (in addition to the automatic removal mentioned below).
New devices discovered at run-time should be dynamically created but stored statically for later usage.
Post by Ravi Kansangara
In short I want to fulfill following things if possible.
1. Sequence of Initialization of TSP & PBX should not matter.
2. User has to add TSP only once (During Installation).
3. During run time, If someone Connected Other PBX (Other Model) with Same
IP & Port to TSP, that should be detected run time. Also all devices should
be Removed & new devices should be connected automatically using
LINE_REMOVE & LINE_CREATE respectively.
If your TSP can detect a PBX change at a IP-address/port then I'd say that this can be regarded as a permanante removal of the old PBX.
In this case the TSP should automatically LINE_REVOVE the corresponding lines and remove them from its static config too.
Post by Ravi Kansangara
Currently I am going Ahead with 0(zero) lines in TSPI_providerEnumDevice() & expose each device with LINE_CREATE.
Ok, but please note: many TAPI apps are not prepared to handle dynamically created device properly!
Can you please guess the approx. ratio ?
Post by Andreas Marschall [exMVP TAPI]
Post by Ravi Kansangara
So during testing i have to Open one TAPI application (to initialize my TSP) then Open same TAPI application again without closing old one (to expose my devices).
When testing with MS TAPI Browser TB20.exe you will see the LINE_CREATE messages as device are created by your TSP.
So there is no need for two instances.
Actually i am not much familiar to use TB20.exe. Is there any good step wise tutorial for that.
Post by Andreas Marschall [exMVP TAPI]
--
Best Regards
Andreas Marschall
Microsoft MVP for TAPI / Windows SDK / Visual C++ 2003-2008
TAPI / TSP Developer and Tester
http://www.I-B-A-M.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm
http://www.I-B-A-M.de/Andreas_Marschall's_Toto_Tools.htm
* Please post all messages and replies to the group / forum so all may
* benefit from the discussion. Private mail is usually not replied to.
* This posting is provided "AS IS" with no warranties, and confers no rights.
Andreas Marschall [exMVP TAPI]
2014-02-21 18:33:23 UTC
Permalink
Post by Ravi Kansangara
Post by Andreas Marschall [exMVP TAPI]
e.g. more than a second for TSPI_providerEnumDevices() + TSPI_providerInit() to complete isn't acceptable IMO.
So trying to establish a TCP/IP connection to the PBX and just waiting for the default TCP/IP timeout of 5*3s is by far inacceptable if PBX is not online.
Yes Currently according my implementation my TSP try to connect with PBX with default timeout of TCP.
IMO that's by far to long for an acceptable return from TAPI initialization.
Post by Ravi Kansangara
If connection fails, TSP tries to connect in background at programmed interval.
Since you already have _INSERVICE and _CONNECTED signaling implemented,
I suggest doing this background TCP/IP connect always and never block TAPI initialization with (outstanding) connection attempts.
Post by Ravi Kansangara
Post by Andreas Marschall [exMVP TAPI]
Ok, but please note: many TAPI apps are not prepared to handle dynamically created device properly!
Can you please guess the approx. ratio ?
I suggest testing it yourself with your TSP against the various TAPI apps that your clients are presumable using most.
This is recommended anyway when doing TSP development, to ensure interoperability between your TSP, various TAPI apps and various OS.
Post by Ravi Kansangara
Actually i am not much familiar to use TB20.exe. Is there any good step wise tutorial for that.
I regard TB20.exe as the most import TAPI test tool, esspecially for TSP and TAPI2 development.
So I strongly recommend getting familiar with it.
I have a small user guide in my FAQ:
http://www.i-b-a-m.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm#_Q:_Is_there_1

The other important TAPI test tool is JulMar's Phone.exe:
http://www.julmar.com/tapi/
Available including source code:
http://www.julmar.com/tapi/native-tapi-samples/tapi_soft_phone.zip
--
Best Regards
Andreas Marschall
Microsoft MVP for TAPI / Windows SDK / Visual C++ 2003-2008
TAPI / TSP Developer and Tester
My TAPI and TSPI FAQ:
http://www.I-B-A-M.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm
My Toto® Tools (a collection of free, mostly TAPI related tools):
http://www.I-B-A-M.de/Andreas_Marschall's_Toto_Tools.htm
* Please post all messages and replies to the group / forum so all may
* benefit from the discussion. Private mail is usually not replied to.
* This posting is provided "AS IS" with no warranties, and confers no rights.
Ravi Kansangara
2014-02-28 07:11:11 UTC
Permalink
Post by Andreas Marschall [exMVP TAPI]
Post by Ravi Kansangara
Post by Andreas Marschall [exMVP TAPI]
e.g. more than a second for TSPI_providerEnumDevices() + TSPI_providerInit() to complete isn't acceptable IMO.
So trying to establish a TCP/IP connection to the PBX and just waiting for the default TCP/IP timeout of 5*3s is by far inacceptable if PBX is not online.
Yes Currently according my implementation my TSP try to connect with PBX with default timeout of TCP.
IMO that's by far to long for an acceptable return from TAPI initialization.
Post by Ravi Kansangara
If connection fails, TSP tries to connect in background at programmed interval.
Since you already have _INSERVICE and _CONNECTED signaling implemented,
I suggest doing this background TCP/IP connect always and never block TAPI initialization with (outstanding) connection attempts.
Post by Ravi Kansangara
Post by Andreas Marschall [exMVP TAPI]
Ok, but please note: many TAPI apps are not prepared to handle dynamically created device properly!
Can you please guess the approx. ratio ?
I suggest testing it yourself with your TSP against the various TAPI apps that your clients are presumable using most.
This is recommended anyway when doing TSP development, to ensure interoperability between your TSP, various TAPI apps and various OS.
Post by Ravi Kansangara
Actually i am not much familiar to use TB20.exe. Is there any good step wise tutorial for that.
I regard TB20.exe as the most import TAPI test tool, esspecially for TSP and TAPI2 development.
So I strongly recommend getting familiar with it.
http://www.i-b-a-m.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm#_Q:_Is_there_1
http://www.julmar.com/tapi/
http://www.julmar.com/tapi/native-tapi-samples/tapi_soft_phone.zip
--
Best Regards
Andreas Marschall
Microsoft MVP for TAPI / Windows SDK / Visual C++ 2003-2008
TAPI / TSP Developer and Tester
http://www.I-B-A-M.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm
http://www.I-B-A-M.de/Andreas_Marschall's_Toto_Tools.htm
* Please post all messages and replies to the group / forum so all may
* benefit from the discussion. Private mail is usually not replied to.
* This posting is provided "AS IS" with no warranties, and confers no rights.
Hi Andreas,

Thanks for you suggestions.

Finally i have decided following method for line Exposing.

1. As Static Line Exposing method is not suitable for my PBX requirement,
i am going with "LINE_CREATE" & "LINE_REMOVE".(i.e. i treats all lines as
new Lines & for each line i send "LINE_CREATE" message.)

2. Also i don't save any static configuration of any lines. Means on each
new connection (i.e. TSPI_providerInit) all lines are exposed dynamically.

3. To solve Problem of TAPI Application that don't support "LINE_CREATE"
& "LINE_REMOVE", I can send LINEDEVSTATE_REINIT when all lines are exposed
dynamically with "LINE_CREATE".

NOTE: Though LINEDEVSTATE_REINIT will cause all TSP's to REINIT, i have to go
with it. Also i have seen in Panasonic PBX using concept of
LINEDEVSTATE_REINIT when exposing Lines to TAPI.

Is that method OK?

Thanks.

Loading...