Как управлять cisco IP-Phone из CLI? - PullRequest
3 голосов
/ 07 марта 2012

У меня есть IP-телефон Cisco 7945, и я хочу управлять им из своего CLI.Например, я хочу запустить команду типа

call start 12345 #12345 is the number I want to call

или

call cancel

Кто-нибудь знает инструмент или что-то подобное?

Я пишу приложение на рельсы и хочу начать звонок из приложения после определенного действия.

Ответы [ 2 ]

5 голосов
/ 10 мая 2012

7945 имеет веб-интерфейс, позволяющий выполнять команды, в том числе команду "Dial", аутентифицированным пользователям.

Ваше приложение rails будет подключаться к телефону на http://phone-ip-address/CGI/Execute и POST некотором XML, который выглядит следующим образом:

<CiscoIPPhoneExecute>
  <ExecuteItem URL="Dial:12345" />
</CiscoIPPhoneExecute>

Аутентификация выполняется с помощью HTTP Basic Auth, а внутренний аутентификатор определяется тем, к какой телефонной системе подключен ваш 7945. Если Cisco Call Manager, он использует назначенную информацию пользователя Call Manager.

Подробности см. В руководствах по услугам IP-телефона на cisco.com. Быстрые ссылки:

Краткий ответ: это не CLI, но программировать номеронабиратель просто, взаимодействуя с телефоном по HTTP.

3 голосов
/ 22 августа 2014

Я знаю, что это старая ветка, но я решил опубликовать этот пример рабочего кода в Ruby. Проверено на телефоне CP-8941. Схемы имени пользователя и пароля могут отличаться. Наша система настроена для взаимодействия с Active Directory, поэтому имя пользователя и пароль совпадают с нашей учетной записью Windows.

require "net/http"
require "uri"

phone = "ip-of-your-phone"
user = "your-username-goes-here"
secret = "your-password-goes-here"
prefix = "91"
todial = "number-to-dial-goes-here"



uri = URI.parse("http://#{phone}/CGI/Execute")

http = Net::HTTP.new(uri.host, uri.port)

request = Net::HTTP::Post.new(uri.request_uri)

http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.basic_auth(user, secret)

request.set_form_data({"XML" => %(<CiscoIPPhoneExecute><ExecuteItem URL="Dial:#{prefix}#{todial}" /></CiscoIPPhoneExecute>) })

response = http.request(request)
...