summaryrefslogtreecommitdiff
path: root/app/controllers/api/v1/calls_controller.rb
blob: 329bd94a6bf6a848278bebe5327c1fed8692aad6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
module Api
  module V1
    class CallsController < ApplicationController
      respond_to :json

      def index
        @calls = Call.limit(10)

        respond_with @calls
      end

      def show
        @call = Call.find(params[:id])

        if params[:transfer_blind]
          @call.transfer_blind(params[:transfer_blind])
        else
          if params[:transfer_attended] && @call.b_sip_account.phones.first.phone_model.manufacturer.name == 'SNOM Technology AG'
            phone = @call.b_sip_account.phones.first
            ip_address = phone.ip_address
            http_user = phone.http_user
            http_password = phone.http_password

            # Hold
            open("http://#{ip_address}/command.htm?key=F_HOLD", :http_basic_authentication=>[http_user, http_password])

            # Call the other party
            (0..(params[:transfer_attended].length - 1)).each do |i|
              digit = params[:transfer_attended][i]
              open("http://#{ip_address}/command.htm?key=#{digit}", :http_basic_authentication=>[http_user, http_password])
            end
            open("http://#{ip_address}/command.htm?key=ENTER", :http_basic_authentication=>[http_user, http_password])
          end
        end

        respond_with @call
      end

    end
  end
end