Giter VIP home page Giter VIP logo

what's People

Contributors

dpiaquadio avatar gladyce avatar jmyles avatar kprasch avatar lilmuddy avatar rachellagodka avatar timgordon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

dpiaquadio jmyles

what's Issues

NobodyPickedUp tests for Twilio

The NobodyPickedUp TestCase, once again, only tests Tropo functionality.

test_task_to_resolve_voicemail_is_tagged_voicemail is pretty easy.

The other two are going to be harder for the usual two reasons: 1) The logic is harder, and 2) They are going to fail.

*Our Twilio handling is definitely not taking voicemails. Definitely not.

Voicemail broken: prompt_and_record raises NotImplementedError for Twilio

This is the logic that ultimately gets executed by the REST call referenced in Issue #45.

https://github.com/SlashRoot/WHAT/blob/master/apps/comm/response.py#L122

test_voicemail_is_taken tests this logic for Tropo:
https://github.com/SlashRoot/WHAT/blob/master/apps/comm/tests.py#L542

The Twilio API is a little different, but the logic is essentially the same.

Remember: Once this logic is being executed, we already know for sure that we're prompting the caller to record a voicemail.

Currently, as Gladyce points out, we pass three kwargs ("recording_kwargs") to the record function:

  • say
  • url
  • transcription

Additionally, in the very first line of the branch, we determine what the URL will ultimately look like:

  • /comm/recording_handler/recording/2451 # The fact that it says "recording" instead of "call" tells the view that this is a voice recording like a voicemail, not a recording of a two-or-more-party call.

Check out the Twilio record command: http://www.twilio.com/docs/api/twiml/record

Some things I notice:

  • Twilio uses the word "action" instead of the word "url" Again, this will be our recording handler.
  • For transcription, Tropo takes an ID and a URL to which it will post the completed transcription once it has finished. By contrast, Twilio wants two different kwargs - "transcribe," which is a boolean, and transcribeCallback, which is the our transcription handling URL.

Twilio has an XML example of voicemail logic on their website:
http://www.twilio.com/docs/api/twiml/record#examples-2

Remember, we'll use the helper library rather than manually constructing XML.

Call Resolution Impediments

The new button looks good, however, now all the recordings show up as having zero for their length, and indeed, when one clicks "play" there is nothing to which one can listen. An initial brief survey of members currently in the shop who have had contact with the application (Kieran, Tim, Max R) has yielded nothing so far in the way of a solution to the difficulty.

Make push SSL-workable

At the moment, there's no way to do push via our comet business via nginx or with SSL generally. Not sure how to proceed.

No twisted call for Twilio REST API to end hold music and move to voicemail

The conference_holding_pattern method of CallResponse does not tell Twilio to send the caller to voicemail after a certain period.

https://github.com/SlashRoot/WHAT/blob/master/apps/comm/response.py#L72

Closing this ticket will be a two-step process:

  1. Create a function that will pass the caller to voicemail.
  2. Call that function in a deferred manner similar to the existing logic.

Here's the relevant part of the Twilio API:
http://www.twilio.com/docs/api/rest/change-call-state

...and the python helper library (see the example TwilioRestClient):
https://github.com/twilio/twilio-python/blob/master/README.md

The logic here is going to be different for Twilio than Tropo.

For Tropo, we wait 40 seconds and then send the "goToVoicemail" signal, which tells Tropo to redirect this call to /comm/voicemail.

Twilio does not have the concept of signals. Instead, we need a function that will run after 40 seconds and look at the PhoneCall object, determining if in fact the hold music has ended and the conference begun.

Note: If the incoming caller is not known to us (ie, the incoming_number of the PhoneCall object does not have an associated ContactInfo) then we don't (in fact can't) create a CommunicationInvolvement object. Thus, we need to execute logic that tests only if the PhoneCall has one or more CommunicationInvolvement objects exist whose direction is "to."

Another Note (about testing this): We can easily test that the function that we'll be calling in fact makes the correct determination about the phone call. However, we currently have no way to test that the function is itself called. We can add this to a list of things that can be tested for twisted.

resolve_calls page needs filtration.

Some suggested filters:

*Has recording
*Is from tech client
*Is from member
*Is from caller who has called more than x times
*Unknown callers only
*Voicemail only

HangupTests have no Twilio testing

Again, this is an important TestCase. There are only two tests - let's at least repeat these two for Twilio. We may need to add others.

Uncouple tropo from outgoing_call view

as mentioned in #47.

"2) As for the outgoing_call view - this is basically completely broken in the sense that it is hard coupled to Tropo. This is one of two views (the other being conference_blast) that has any coupling to a provider. Let's take that coupling and move it to services.py or response.py as appropriate."

sleep mode on comm app

when members leave the shop they have the option to disable their device as a dial list participant and when they come back they login and their device is reactivated.

Suspend Alerts

A flag file, located somewhere on the production server, titled "suspend_alerts" is normally set to 0. If set to 1, alerts are no longer sent out. We might consider having "suspend_error_alerts," "suspend_heartbeat_alerts," and "suspend_all_alerts" and having the heartbeat one also reside on the heartbeat server.

At midnight every night, the flags are set back to 0.

Just an idea.

Heartbeat frequently fails email test

It looks like the string of failures from last night into this morning weren't errors - the emails were in fact late getting go gmail in each case. If they don't arrive in time to be read by the subsequent heartbeat, they don't work.

In the short term, in order to stem the noise of error messages, we need to somehow loosen the criteria. I.E., we don't need to get a call unless the email still hasn't arrived after two heartbeats. Or something.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.