Trixbox 與Lync 之間,由 Lync 撥回 Trixbox 都是正常會通的。反過來,由 Trixbox 撥到 Lync 有時撥的通,有時撥不通,應該不是網路的問題。困擾了很久..
今天查了一篇討論,建議在 Trixbox Trunk 最後面加一個參數: qualify=yes 並重新啟動 Asterisk (Trixbox UI => System => System maint => Reset Now)
FreePBX在下面這段提到 qualify=yes 能monitor 網路的建康狀況:
The setting of qualify=yes is technically not needed but allows you to monitor the health of the internet connection in Asterisk, and if not doing any port forwarding, keeps the NAT pinhole open.
目前測試 Trixbox 已能正常連上 Lync, Trixbox => PBX => PBX Status => SIP peers 的Status 由 unmonitored變為OK( 2 ms) 。
其他 Document 可參看這.
2012年3月28日 星期三
2012年3月26日 星期一
VB.NET 的Send Mail內容在Notes Client未正常換行..
記錄一下:
用VB.NET 開發Send mail 的通知,用System.Net.Mail.SmtpClient 的Function
透過SMTP Server 轉給Domino, Client 是IBM Lotus Notes 8.5.2 ,在換行上寫法不同在不同Client 有不一樣的效果.
範例如下:
MsgBody = "Test line 1" + </br> + "Test line 2"
MailMessage.IsBodyHtml = True
MailMessage.Body = MsgBody.ToStrinng
在Notes 8.5.2 Basic Client 會得到:
Test line 1 Test line 2 <<=同一行,沒換行效果
在Notes 8.5.2 Standard Client 會變成:
Test line 1 <<=會換行
Test line 2
改用 <p> 取代<br>會多跳一行,MsgBody = "Test line 1" + </p> + "Test line 2"
在Notes 8.5 Standard Client 與 Basic Client 都會變成:
Test line 1
Test line 2
雖然多跳一行不美觀,但至少能換行,不然就要用別人的元件囉~
另外有人寫到 Environment.Newline ,或"\r\n" ,我測試後都沒效果。
供參考~
用VB.NET 開發Send mail 的通知,用System.Net.Mail.SmtpClient 的Function
透過SMTP Server 轉給Domino, Client 是IBM Lotus Notes 8.5.2 ,在換行上寫法不同在不同Client 有不一樣的效果.
範例如下:
MsgBody = "Test line 1" + </br> + "Test line 2"
MailMessage.IsBodyHtml = True
MailMessage.Body = MsgBody.ToStrinng
在Notes 8.5.2 Basic Client 會得到:
Test line 1 Test line 2 <<=同一行,沒換行效果
在Notes 8.5.2 Standard Client 會變成:
Test line 1 <<=會換行
Test line 2
改用 <p> 取代<br>會多跳一行,MsgBody = "Test line 1" + </p> + "Test line 2"
在Notes 8.5 Standard Client 與 Basic Client 都會變成:
Test line 1
Test line 2
雖然多跳一行不美觀,但至少能換行,不然就要用別人的元件囉~
另外有人寫到 Environment.Newline ,或"\r\n" ,我測試後都沒效果。
供參考~
2012年3月23日 星期五
壓縮SQL Server的Transation Log
記錄一下..免得久久找一次.
有用的方法來抑制SQL DB的Log快速成長:
1. 不重要的DB,將Recovery Mode 改為Simple:DB->properties->options (自動記錄截斷)
2. 壓縮Transaction Log DB:
壓縮SQL Server的Transation Log(交易記錄檔)
USE <DB_NAME> --<DB_NAME>:資料庫名稱
DBCC SHRINKFILE([<DB_NAME>_log],2) --<DB_NAME>_log:ldf檔的邏輯檔名
Ex: 壓縮OCS DB的Log
USE OCSDB
DBCC SHRINKFILE(OCSDB_log],2)
2012年3月14日 星期三
Terminal Server 內的檔案為什麼不能刪檔案?
Windows 2008 ˉTerminal Server有時多人登入後,不知道為什麼偏偏有一個檔案不能刪,
點選刪除時,出現 Access is denied.
點選檔案右鍵=>[屬性Properties]=>[安全Security] =>[進階Advanced]=>
[Permissions]標籤 =>顯示 you do not have permission to view or edit this object's permission settings
[擁有者/Owner] 標籤=> [編輯/Edit] => [Change owner to] 挑選新Owner => [套用/Apply]
也無法變更。
明顯是某個執行中的程式正咬住,但又不知是誰?
安裝 Unlocker 1.19 後,http://download.cnet.com/Unlocker/3000-2248_4-10493998.html
點選檔案右鍵=> unlocker =>即顯示Lock檔案的程式/程序ID(pid)/執行者等資訊.
請相應使用者退出後即可刪除.
點選刪除時,出現 Access is denied.
點選檔案右鍵=>[屬性Properties]=>[安全Security] =>[進階Advanced]=>
[Permissions]標籤 =>顯示 you do not have permission to view or edit this object's permission settings
[擁有者/Owner] 標籤=> [編輯/Edit] => [Change owner to] 挑選新Owner => [套用/Apply]
也無法變更。
明顯是某個執行中的程式正咬住,但又不知是誰?
安裝 Unlocker 1.19 後,http://download.cnet.com/Unlocker/3000-2248_4-10493998.html
點選檔案右鍵=> unlocker =>即顯示Lock檔案的程式/程序ID(pid)/執行者等資訊.
請相應使用者退出後即可刪除.
2012年3月8日 星期四
如何整批啟用Lync User及更改設定?
整批更新Lync User,簡單的更新可以用Command 方式處理, 複雜的更新只能用批次處理:
4. 整批啟用Enterprise Voice, 試了很久, 最簡單的方式是用PowerShell:
需有一個Shell script : 例如: demo.ps1
匯入資料: 例如: user.csv
輸出結果到執行目錄上: AssignLineUri-yyyy-mm-dd-xxxx.txt 型式
a.將下列資訊存成: demo.ps1
param( [string] $importfile = $(Read-Host -prompt "Please enter a file name"))
$importedusers = Import-Csv $importfile
$transcriptname = "AssignLineUri-" + (Get-Date -Format s).replace(":","-") +".txt"
Start-Transcript $transcriptname
foreach ($importeduser in $importedusers)
{
$UserDN = "CN=" + $importeduser.SIPUser + ",OU=demo,dc=lync,dc=com"
Set-CsUser -identity $UserDN -EnterpriseVoiceEnabled $True -LineUri $importeduser.LineUri –Verbose
}
Stop-Transcript
b.將使用者資訊及話機號碼設成: User.csv
SIPUser,LineUri
lyncuser1,tel:+8001
lyncuser2,tel:+8002
c. 操作方式:
於Start =>Lync Server management shell => <shell directory>\demo.ps1
輸入: user.csv
查看結果
其他簡體的啟用範例:
http://bbs.winos.cn/archiver/tid-117393.html
PowerShell 的啟用範例:
http://blogs.technet.com/b/csps/archive/2010/06/10/scriptmoveusers.aspx
http://blogs.technet.com/b/csps/archive/2010/06/10/scriptassignlineuris.aspx
1.
啟用Lync : 單一用戶(以LyncUser1為例)
Enable-CsUser -Identity "LyncUser1" -RegistrarPool pool.lync.com -SipAddress sip:lyncuser1l@lync.com
Enable-CsUser -Identity "LyncUser1" -RegistrarPool pool.lync.com -SipAddress sip:lyncuser1l@lync.com
2.
啟用Lync : 以OU整批啟用
Get-CsAdUser -OU "ou=demo,dc=lync,dc=com" | Enable-CsUser -RegistrarPool " pool.lync.com " -SipAddressType EmailAddress -SipDomain lync.com
Get-CsAdUser -OU "ou=demo,dc=lync,dc=com" | Enable-CsUser -RegistrarPool " pool.lync.com " -SipAddressType EmailAddress -SipDomain lync.com
3. 啟用LyncUser1的 Enterprise Voice
Set-CsUser -Identity "CN=lyncuser1,OU=demo,dc=lync,dc=com"
-EnterpriseVoiceEnabled $True -LineURI tel:+80014. 整批啟用Enterprise Voice, 試了很久, 最簡單的方式是用PowerShell:
需有一個Shell script : 例如: demo.ps1
匯入資料: 例如: user.csv
輸出結果到執行目錄上: AssignLineUri-yyyy-mm-dd-xxxx.txt 型式
a.將下列資訊存成: demo.ps1
param( [string] $importfile = $(Read-Host -prompt "Please enter a file name"))
$importedusers = Import-Csv $importfile
$transcriptname = "AssignLineUri-" + (Get-Date -Format s).replace(":","-") +".txt"
Start-Transcript $transcriptname
foreach ($importeduser in $importedusers)
{
$UserDN = "CN=" + $importeduser.SIPUser + ",OU=demo,dc=lync,dc=com"
Set-CsUser -identity $UserDN -EnterpriseVoiceEnabled $True -LineUri $importeduser.LineUri –Verbose
}
Stop-Transcript
b.將使用者資訊及話機號碼設成: User.csv
SIPUser,LineUri
lyncuser1,tel:+8001
lyncuser2,tel:+8002
c. 操作方式:
於Start =>Lync Server management shell => <shell directory>\demo.ps1
輸入: user.csv
查看結果
其他簡體的啟用範例:
http://bbs.winos.cn/archiver/tid-117393.html
PowerShell 的啟用範例:
http://blogs.technet.com/b/csps/archive/2010/06/10/scriptmoveusers.aspx
http://blogs.technet.com/b/csps/archive/2010/06/10/scriptassignlineuris.aspx
2012年2月23日 星期四
如何將 Lync 與 FreePBX/ Trixbox 整合
花很多時間將 Lync 2010 FE 透過 Lync Mediation Server 連接FreePBX( Trixbox),如果沒有做成文件,以後一定會找不到。
所需的東西:
1. TrixBox (目前可抓到 Trixbox 2.8.0.4 CE) , 相關說明如下
http://www.diybl.com/course/6_system/linux/Linuxjs/2008106/148288.html
http://www.msexchange.org/articles_tutorials/exchange-server-2010/mobility-client-access/how-configure-unified-messaging-asterisk-sip-gateway-part2.html
2. Client : 3CXPhone
http://www.3cx.com/VOIP/voip-phone.html
3. TrixBox 設定方法:
http://www.fintechcommunications.com/blog/?p=60
http://imaucblog.com/archive/2009/10/03/part-1-how-to-integrate-exchange-2010-or-2007-with-trixbox-2-8/
4. Lync 設定方法:
http://www.circuitid.com/blog/lync-setup-guide-using-circuitid-part-1-configuring-mediation-server
http://www.circuitid.com/blog/lync-setup-guide-using-circuitid-part-2-configuring-voice-routing
5. 注意事項:
Lync 內部都走E.164 (+開頭的Formate,例如:+2015),如果透過SIP Trunk丟給PBX時,有的FreePBX 不接受"+"號,需將+號移除。
這個動作在Lync 叫 : Outbound route translation ,(說明請看:Translating Outbound dials strings)
http://technet.microsoft.com/en-us/library/gg412757.aspx
http://technet.microsoft.com/en-us/library/gg425831.aspx
http://blogs.technet.com/b/csps/p/uimap59.aspx
如果效果是要將E.164 的formate (例如:+2015) 往 PSTN Gateway 送時,就會取消"+",為 2015 。
則可於Trunk Configuration 內這樣設定:
Starting digits = +2 : 開頭為+2
Length= exactly 5 : 這裡的Length 是說含加號,共五碼 (例如: +2015)
Digits to remove = 1 : 移除第一碼,即加號
Digits to add = "": 不加上任何字元
http://designinglync.blogspot.com/2011/05/lync-dial-plans-and-normalization-rules.html
6. 語音/視訊通訊最低頻寬說明:
http://technet.microsoft.com/zh-tw/library/gg398334.aspx
7. Trixbox 有用的說明
http://www.freepbx.org/support/documentation/howtos/howto-setting-up-voip-provider-trunks/freepbx-sip-trunks-powered-by-ban
2012年2月7日 星期二
archive system log by schedule tasks
' 由於某些軟體會產生大量的檔案,特建立備存機制,
' 1. 將特定目錄下的子目錄都備存起來,並刪除空的子目錄
' 2. 需先安裝WINRAR
' 3. 將下列程式做成.vbs 檔案
' 4. 建立Task schedule , 將備存的目錄設為參數
'
'--- .vbs 程式開始
Option Explicit
' 宣告變數
Dim FSO, agoDays, modifiedDate, ArcFolder ,myArgs, GetDateTimeFM, wshshell
' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")
' 建立執行的shell 物件
Set wshshell=createobject ("wscript.shell")
'取得第一個變數
Set myArgs = WScript.arguments
' 欲備存檔案所在之目錄
ArcFolder = myArgs(0)
' 取得日期(yyyy_mm_dd_hh_nn_ss)
GetDateTimeFM = GetFormattedDateTime()
' 呼叫備存檔案的子程序
ArcFilesInFolder FSO.GetFolder(ArcFolder)
' 呼叫刪除空Folder的子程序
DelFoldersInFolder FSO.GetFolder(ArcFolder)
' 備存目錄的子程序
Sub ArcFilesInFolder(folder)
' 宣告變數
Dim file, subFolder,strshell
' 如果遇到子目錄,也要進去檢查並刪除
For Each subFolder in folder.SubFolders
strshell = "WinRAR.exe a -r -df " + SubFolder + "-dt-" + GetDateTimeFM + ".rar " + subFolder + "\"
Call wshshell.run (strshell,0)
Next
End Sub
' 刪除檔案的子程序
Sub DelFoldersInFolder(folder)
' 宣告變數
Dim dfile, dsubFolder, fdEmpty
' 如果遇到子目錄,要先進去檢查並刪除
For Each dsubFolder in folder.SubFolders
DelFoldersInFolder dsubFolder
Next
fdEmpty = True
' 找出目前所在目錄內所有的檔案
For Each dfile In folder.Files ' 檢查檔案日期是否符合條件,若符合,就刪除
fdEmpty = False
Next
For Each dsubFolder in folder.SubFolders
fdEmpty = False
Next
If fdEmpty = True Then
folder.delete
End If
End Sub
' 取得日期的函式
Function GetFormattedDateTime
Dim strNow, strDD, strMM, strYYYY,strHH,strNN,strSS
strYYYY = DatePart("yyyy",Now())
strMM = Right("0" & DatePart("m",Now()),2) 'month
strDD = Right("0" & DatePart("d",Now()),2) 'day
strHH = Right("0" & DatePart("h",Now()),2) 'hour
strNN = Right("0" & DatePart("n",Now()),2) 'mintue
strSS = Right("0" & DatePart("s",Now()),2) 'second
GetFormattedDateTime = strYYYY & "_" & strMM & "_" & strDD & "_" & strHH & "_" & strNN & "_" & strSS
End Function
'--- .vbs 程式結束
訂閱:
文章 (Atom)