Ejemplo n.º 1
0
        /// <summary>
        /// Allows you to make a call from your LongCode and play an audio file (mp3 or wav formats only) to a valid phone number
        /// </summary>
        /// <param name="accountId"></param>
        /// <param name="longCode">Long code (From phone number) in the following format Ex.1xxxxxxxxxx</param>
        /// <param name="model"></param>
        /// <returns></returns>
        public string AudioCall(int accountId, string longCode, AudioCall model)
        {
            var request = new RestRequest(AUDIO_CALL_URI, Method.POST)
            {
                RequestFormat  = DataFormat.Json,
                JsonSerializer = new NewtonsoftSerializer()
            };


            request.AddUrlSegment("accountId", accountId.ToString());
            request.AddUrlSegment("longCode", longCode);

            request.AddBody(model);

            var res = Execute <object>(request) ?? "";

            // TODO: Map a flattened contact to an unflattened one.

            return(res.ToString());
        }
Ejemplo n.º 2
0
        static void HandleUserCall(object sender, CallEventArgs e)
        {
            RadioCall call    = e.Call;
            string    rssiStr = "";

            if (!double.IsNaN(call.RSSI))
            {
                rssiStr = " RSSI " + call.RSSI;
                DBRadio r = db.ReadRadio(call.From);
                if (r == null)
                {
                    r = new DBRadio(call.From.Int, call.RSSI);
                }
                else
                {
                    r.AddReading(call.RSSI);
                }
                db.UpdateRadio(r);
            }
            if (call.IsAudio)
            {
                Console.WriteLine("Audio Call : {0} => {1} " + rssiStr, call.From, call.To);
                AudioCall ac       = (AudioCall)call;
                string    filename = String.Format(@"E:\RadioCalls\{0} - {1} to {2}.mp3", call.Start.ToString("yyyy-MM-ddTHH-mm-ss"), call.From.Int, call.To.Int);
                try
                {
                    ac.SaveToMP3(filename);
                }
                catch (Exception)
                {
                    Console.WriteLine("Unable to decode audio!");
                }
                db.WriteVoiceCall(call.From, call.To, call.Start, call.End, call.RSSI, call.Slot, filename);
                srv.PublishVoiceCall(call);
            }
            else
            {
                DataCall dc = (DataCall)call;
                switch (dc.DataType)
                {
                case CallDataType.TMS:
                    if (dc.TextMessage.Type == MessageType.Ack)
                    {
                        Console.WriteLine("Text Message Ack : {0} => {1}" + rssiStr, call.From, call.To);
                    }
                    else if (dc.TextMessage != null)
                    {
                        Console.WriteLine("Text Message : {0} => {1} \"{2}\"" + rssiStr, call.From, call.To, dc.TextMessage.Message);
                    }
                    else
                    {
                        Console.WriteLine("Text Message : {0} => {1} unable to parse!" + rssiStr, call.From, call.To);
                    }
                    break;

                case CallDataType.LRRP:
                    LRRPPacket pkt = dc.LRRPPacket;
                    if (pkt.Type == LRRPPacketType.ImmediateLocationResponse || pkt.Type == LRRPPacketType.TriggeredLocationData)
                    {
                        Console.WriteLine("Got LRRP Packet from {0} {1} {2}", call.From, pkt, rssiStr);
                    }
                    else
                    {
                        Console.WriteLine("Got LRRP Control Message: {0} => {1}" + rssiStr, call.From, call.To);
                    }
                    break;

                case CallDataType.ICMP:
                    Console.WriteLine("Got ICMP Ping: {0} => {1}" + rssiStr, call.From, call.To);
                    break;

                case CallDataType.RadioCheck:
                    Console.WriteLine("Got Radio Check: {0} => {1}" + rssiStr, call.From, call.To);
                    break;

                case CallDataType.RadioCheckAck:
                    Console.WriteLine("Got Radio Check Ack: {0} => {1}" + rssiStr, call.From, call.To);
                    break;

                case CallDataType.UnknownSmall:
                case CallDataType.IPAck:
                    //Just ignore this
                    break;

                default:
                    Console.WriteLine("Data Call Type is {0}", dc.DataType);
                    Console.WriteLine("Got Unknown radio call: {0} => {1}" + rssiStr, call.From, call.To);
                    Console.WriteLine("    " + BitConverter.ToString(call.Data));
                    break;
                }
            }
        }