slashroot / what Goto Github PK
View Code? Open in Web Editor NEWslashRoot's "Whole House Automation Thing" - the software that powers the Tech Dojo.
License: MIT License
slashRoot's "Whole House Automation Thing" - the software that powers the Tech Dojo.
License: MIT License
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.
add a column for a checkbox on the resolve calls page so multiple calls can be selected and resolved at once.
See title.
At the moment, the heartbeat assumes and tests non-SSL connections. It probably needs to do both.
The title pretty much says it - in order to make it work, you need to click "login."
We don't want to get phone calls everytime somebody is running the WHAT development server and encounters a 500.
Each call has a Task. If the call went to voicemail, the task is supposed to be tagged "voicemail." This is tested for Tropo,
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:
Additionally, in the very first line of the branch, we determine what the URL will ultimately look like:
Check out the Twilio record command: http://www.twilio.com/docs/api/twiml/record
Some things I notice:
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.
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.
need to be able to scroll through all calls on the resolve calls page...currently can only see 20.
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.
Once a content blog slug is set, it needs to remain unless manually changes. Otherwise, the permalinks that we send out to the world will result in 404's if we change the headlines.
Legendary.
....only red_alert message is sent.
Are there too many HTTP requests happening back and forth?
...title says it all.
ticket_profile.html and task_profile.html are absolutely drenched.
We just got a 500.
We need a page that displays our status and such.
We need a more efficient way of resolving phone calls from other members and people who can't/won't leave messages on our voicemail. How would we go about approaching this?
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:
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.
Let's add another attribute to DialListParticipation, indicating whether the participant prefers to receive actual caller ID.
Any user can "Roger" a message, simply indicating that the have read and understood it.
If you post to:
http://slashrootcafe.com/social/log/group/SlashRoot/
...you'll see that the ajax response says that the message field is required. Not sure what's up here.
It's probably something inside this branch:
https://github.com/SlashRoot/WHAT/blob/master/apps/social/views.py#L127
Drawing attention to tech jobs actually draws attention to the Task object (ie, "Rendered Tech Service") instead of the Service object, (ie, "#104 - Sally Jones").
Equivalent Tropo test:
https://github.com/SlashRoot/WHAT/blob/master/apps/comm/tests.py#L192
Title says it all. Has a name.
"resolve selected" button on the bottom of the resolve calls page
This.
The public-facing pages are the most important.
For pages that use sitewide_head, there's a block that can be overridden:
https://github.com/SlashRoot/WHAT/blob/master/templates/sitewide_head.html#L8
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
Some elements are difficult to read.
when a dial_list_participant does not answer the call issued to them, the personal voicemail on their account activates even if the call is answered by another dial_list_participant.
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.
A dead-simple way for people to enter their contact info.
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."
I don't think we're even using them?
WHAT/apps/comm/views.py lines 286 through 310 has information specific to slashRoot. Would it be better to keep that in a separate document, and then the version uploaded to github could have a generic version.
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.
When we iterate through a traceback, the "lines" are sometimes not lines, but None. This happens if an error is raised for which the traceback has no detail.
In this case, AttributeError gets raised by this line:
https://github.com/SlashRoot/WHAT/blob/master/apps/meta/errors.py#L13
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.