Wednesday, October 14, 2009

Astricon 2009 - Open Source Maximus

I'm at Astricon 2009, the Asterisk Development conference. Asterisk is an internet based, free phone system. Quite an interesting crowd of open source developers, solution providers, VOIP resellers, and hardware manufacturers; about 500 persons in total.

Chris DiBona of Google gave the keynote this morning and focused on Open Source. He pointed out that the majority of time that Google is interested in a technology company that they fund/support the company to get to a stable build and then make it available to the entire Open Source community. There are somewhere around 32 billion lines of open source code; a code base that will outgrow and out-maneuver most proprietary software applications. Ironically Google does not use Asterisks; Google Voice is a proprietary application that is specifically works of off Google's core servers; which Asterisk will not. So much for embracing open source!

I've been hanging out in the Coders Zone most of the day. The breadmaker and soda's are keeping the me and the developers here happy. Half the people here seem to either work for Digium (the inventor of Asterisk) or are a reseller of Digium. Although I've been a customer of Digiums; they are too big these days to care for the little guy; nevertheless, in my quest to find a phone system consultant they referred me to Leif, a fellow that literally wrote the book on Asterisks, and hopefully he can build our custom solutions.

The exhibit hall has shown a few phone system solutions of interest:
  • - a whole customer service platform (really sweet/complete system)
  • - call center management system
  • - text to speech solutions
  • - contact center people
  • - Speech-to-text provider
All-in-all; It's been a successful days quest here in Glendale, AZ.

Friday, September 11, 2009

Asterisk: Identify and Hanging Up a Call

When using an Asterisk with a SIP client like X-Lite; sometimes a disruption in the X-Lite client may occur, but Asterisks keeps the call active. If you're paying by the minute, this can be an expensive annoyance.

Identify if Asterisk is still on the line by running the command:
core show channels

pbx*CLI> core show channels
Channel Location State Application(Data)
Zap/16-1 (None) Up Bridged Call(SIP/7118-b6b1c5d8
SIP/7118-b6b1c5d8 s@macro-dialout-trun Up Dial(ZAP/g0/48###71268|300|tT)
Zap/13-1 (None) Up Bridged Call(SIP/7112-b6b0d0f8
SIP/7112-b6b0d0f8 s@macro-dialout-trun Up Dial(ZAP/g0/8884588762|300|tT)
Zap/7-1 (None) Up Bridged Call(SIP/7103-b6e0dc68
SIP/7103-b6e0dc68 s@macro-dialout-trun Up Dial(ZAP/g0/60###77511|300|tT)
Zap/11-1 (None) Up Bridged Call(SIP/7114-b6b2b8b0
SIP/7114-b6b2b8b0 s@macro-dialout-trun Up Dial(ZAP/g0/61###02929|300|tT)
Zap/6-1 (None) Up Bridged Call(SIP/7104-b6efd110
SIP/7104-b6efd110 s@macro-dialout-trun Up Dial(ZAP/g0/50###8698|300|tT)
Zap/1-1 (None) Up Bridged Call(IAX2/freepbx-3125
IAX2/freepbx-3125 s@macro-dialout-trun Up Dial(ZAP/g0/80###75414|300|tT)
Zap/2-1 (None) Up Bridged Call(SIP/7113-b67f3ed8
SIP/7113-b67f3ed8 s@macro-dialout-trun Up Dial(ZAP/g0/41###16000|300|tT)
Zap/10-1 (None) Up Bridged Call(SIP/7106-b67241a0
SIP/7106-b67241a0 s@macro-dialout-trun Up Dial(ZAP/g0/95###26252|300|tT)
Zap/4-1 (None) Up Bridged Call(SIP/310-b607b0d0)
SIP/310-b607b0d0 s@macro-dialout-trun Up Dial(ZAP/g0/3083446400|300|tT)
SIP/323-08806ba8 (None) Up Bridged Call(Local/317@from-in
Local/317@from-inter s@macro-dial:7 Up Dial(SIP/323|22|trTM(auto-blkv
Local/317@from-inter 1001@from-internal:1 Up Bridged Call(Zap/9-1)
Zap/9-1 1001@ext-queues:20 Up Queue(1001|t||custom/RelevantA
Zap/5-1 33BBACE092CA83BA9E39 Up MeetMe(33BBACE092CA83BA9E39E8C
Zap/pseudo-331706926 s@from-zaptel:1 Rsrvd (None)

In the above, I determined that the MeetMe call was our stale conference call session. You then, hangup a line, with the command:
soft hangup Zap/5-1

Wednesday, March 25, 2009

Killing Excessive Blocking Transactions in SQL

I recently made a small error in a SQL Server parsing function that caused an endless loop. Unfortunately SQL doesn't escalate an error and will allow these transactions to go on endlessly.

I quickly realized the error and attempted to correct the SQL function. However since there were users stuck in this endless loop, my ALTER FUNCTION transaction was being blocked.

KILLing individual SPIDs didn't work since I could not keep up with the number of backup of user requests.

To circumvent this, I ran a process to KILL all queries blocking my SPID:

declare @bCont bit, @i int, @s varchar(100)
set @bCont = 1

while @bCont = 1
select @i = blocked
from master..sysprocesses
where spid = 113

if isnull(@i , 0) <> 0
set @bCont = 1
print @s
SET @s = 'kill ' + convert(varchar(12), @i)
exec (@s)
waitfor delay '00:00:00.05'
SET @bcont = 0

Share Links