Posso definir uma receita IFTTT para ser executada apenas em um momento específico?
15
Estou usando uma receita pequena e elegante de IFTTT que responde automaticamente às mensagens de texto recebidas pelo Google Voice. Este , para ser preciso.
Eu só preciso que ele funcione quando estou no trabalho, por isso tenho ligado e desligado manualmente todos os dias, conforme necessário.
Existe alguma maneira de ativar a receita apenas em horários determinados? Por exemplo, entre 9h e 17h nos dias úteis, por exemplo?
No começo, pensei que o canal Data e hora seria útil, mas não parece haver uma maneira de usá-lo para acionar receitas existentes ou encadear receitas.
Pesquisei na Internet e encontrei este post no r / IFTTT, fazendo a mesma pergunta e sem receber respostas.
Não parece. Eles têm a metade do gatilho da solução com o canal Data e hora . Você pode definir ações a serem acionadas em determinados dias da semana em determinados horários. Imagine uma receita para ativar sua receita do Google Voice às 9h e uma para desativá-la às 17h.
No entanto, o canal IFTTT não possui ações para ativar ou desativar uma receita. Você pode entrar em contato com eles para perguntar se eles podem adicionar esses recursos. Meu palpite é que eles consideraram e pensaram que ninguém iria usá-lo ou que seria abusado de alguma forma.
Existe uma maneira de fazer isso, no entanto, pode ser um pouco complicado e requer um host unix com php 5, portanto, seja avisado.
Passo 1
A primeira coisa que você precisa fazer é adicionar o canal do criador. Você faz isso da mesma maneira que adicionaria qualquer outro canal, clicando em "canais" na parte superior da página e pesquisando por ele. Em seguida, clicando nele e pressionando o botão "adicionar canal".
Passo 2
Crie um documento php em branco no seu host. Realmente não importa onde, desde que você possa acessá-lo com um navegador.
etapa 3
O que você faz agora é fazer uma receita onde seu gatilho ativa o canal do criador. Depois de configurar seu gatilho, basta clicar no canal do criador e depois em "Fazer uma solicitação da Web". Em seguida, digite o URL da web do documento que criamos na etapa 2 no campo URL. Altere o método para GET e deixe os outros campos em branco.
Passo 4
Agora faça uma receita que é acionada por uma solicitação da web. Faça o nome do evento como quiser, desde que você se lembre. Faça o "que" da receita o que você quiser.
Etapa 5
Agora, adicionamos código ao documento PHP que criamos na etapa 2. Adicione esse código, alterando o horário permitido (atualmente às 6h), o passe, o fuso horário e o URL em que você alterará a "chave de exemplo" à sua chave (encontrada aqui) e {{event}} ao evento que você nomeou na etapa 4.
Se você não tem um servidor Web, você pode tentar um serviço como hook.io
jamesmstone
0
Não é meu, mas isso funciona muito bem para mim! Vá para https://platform.ifttt.com/maker e crie o applet e use-o na seção de código do filtro. O * .skip () é importante para definir o cancelamento da ação após o gatilho. PS não é um codificador!
// Change startTime and stopTime to set the time range when you want
// your service's action (the 'That') to happen:
//
var startTime = moment('03:00 pm', "HH:mm a");
var stopTime = moment('06:00 pm', "HH:mm a");
//
// startTime is the first time when the action can happen
// stopTime is the last time the action can happen... until time
// reaches the next startTime.
//
// Notes:
// - startTime can be later than stopTime. For example, startTime
// can be 10:00pm and stopTime 06:00am. This means actions can
// happen from 10pm of one day until 6am of the next day but
// not between 6am and 10pm of either day.
//
// - startTime cannot be the same as stopTime
//
// - 'Skip' messages are written when the service's action does not
// happen, such as after the stopTime and before the next
// start time.
//
// - If you want to use this code with a service other than
// Gmail.sendYourselfAnEmail, you must change the lines that
// reference Gmail.sendYourselfAnEmail.skip to the skip method
// for your service.
//
// --------------------------
//
// The code converts everything to minutes for comparision purposes
//
var startTimeMinutes = startTime.minutes() + startTime.hours() * 60;
var stopTimeMinutes = stopTime.minutes() + stopTime.hours() * 60;
var triggerTimeMinutes = Meta.triggerTime.minutes() + Meta.triggerTime.hours()* 60;
//
// StartTime = stopTime not allowed.
//
// Set some defaults...
//
var doThat = new Boolean(false);
var whatsup = "'That' has been skipped";
//
// If start time is less than stop time, then the range is assumed to
// be a continuous period during a single day. E.g., 9am-6pm.
//
if ((startTimeMinutes<stopTimeMinutes)
&& (triggerTimeMinutes >= startTimeMinutes
&& triggerTimeMinutes <= stopTimeMinutes))
{
doThat = Boolean(true);
whatsup = "range within a single day";
}
//
// If start time > stop time, then the range is assumed to span
// midnight (12am). E.g. 10pm-6am. This range covers parts of two
// days.
//
else if ((startTimeMinutes>stopTimeMinutes)
&& (triggerTimeMinutes > startTimeMinutes
|| triggerTimeMinutes < stopTimeMinutes))
{
doThat = Boolean(true);
whatsup = "range spans midnight";
}
//
// Out of range...
//
if (doThat == false)
{
AndroidMessages.sendAMessage.skip("Event happened outside time range (" + whatsup +") - time of trigger was "+Meta.triggerTime.format('LT')+", but start time to allow the action is "+ startTime.format('LT') + " and stop time is "+ stopTime.format('LT') + " Debug info: minutes are "+triggerTimeMinutes + " " + startTimeMinutes + " " + stopTimeMinutes);
}
//
// The following code can be uncommented for debugging. It writes
// an entry to the activity log instead of performing the
// action.
//
// else
// {
// IfNotifications.sendNotification.setMessage("Action can happen (" + whatsup +") - time of trigger was "+Meta.triggerTime.format('LT')+", start time is "+ startTime.format('LT') + ", and stop time is "+ stopTime.format('LT') + ". Debug info: Minutes are trigger="+triggerTimeMinutes + ", start=" + startTimeMinutes + ", and stop=" + stopTimeMinutes);
// }
// }
Outra maneira de conseguir isso, sem recorrer à criação de um applet manual, é usando o Stringify.com como intermediário.
Permite incluir um nó "apenas se" em seus fluxos (fluxo Stringify = receita IFTTT). Se você tiver sorte, o Stringify já suporta o que deseja acionar, mas há apenas algumas "coisas" que eles suportam - em comparação com a infinidade no IFTTT.
Você pode definir receitas de "entrada" no IFTTT que acionarão um acionador do Stringify e uma receita de "saída" que será acionada a partir de uma ação do Stringify.
Por exemplo:
A receita IFTTT nº 1 aciona o fluxo nº 1 quando saio do meu wifi em casa
O fluxo Stringify nº 1 é executado somente quando é noite e aciona a receita nº 2
Não é meu, mas isso funciona muito bem para mim! Vá para https://platform.ifttt.com/maker e crie o applet e use-o na seção de código do filtro. O * .skip () é importante para definir o cancelamento da ação após o gatilho. PS não é um codificador!
// Change startTime and stopTime to set the time range when you want // your service's action (the 'That') to happen: // var startTime = moment('03:00 pm', "HH:mm a"); var stopTime = moment('06:00 pm', "HH:mm a"); // // startTime is the first time when the action can happen // stopTime is the last time the action can happen... until time // reaches the next startTime. // // Notes: // - startTime can be later than stopTime. For example, startTime // can be 10:00pm and stopTime 06:00am. This means actions can // happen from 10pm of one day until 6am of the next day but // not between 6am and 10pm of either day. // // - startTime cannot be the same as stopTime // // - 'Skip' messages are written when the service's action does not // happen, such as after the stopTime and before the next // start time. // // - If you want to use this code with a service other than // Gmail.sendYourselfAnEmail, you must change the lines that // reference Gmail.sendYourselfAnEmail.skip to the skip method // for your service. // // -------------------------- // // The code converts everything to minutes for comparision purposes // var startTimeMinutes = startTime.minutes() + startTime.hours() * 60; var stopTimeMinutes = stopTime.minutes() + stopTime.hours() * 60; var triggerTimeMinutes = Meta.triggerTime.minutes() + Meta.triggerTime.hours()* 60; // // StartTime = stopTime not allowed. // // Set some defaults... // var doThat = new Boolean(false); var whatsup = "'That' has been skipped"; // // If start time is less than stop time, then the range is assumed to // be a continuous period during a single day. E.g., 9am-6pm. // if ((startTimeMinutes<stopTimeMinutes) && (triggerTimeMinutes >= startTimeMinutes && triggerTimeMinutes <= stopTimeMinutes)) { doThat = Boolean(true); whatsup = "range within a single day"; } // // If start time > stop time, then the range is assumed to span // midnight (12am). E.g. 10pm-6am. This range covers parts of two // days. // else if ((startTimeMinutes>stopTimeMinutes) && (triggerTimeMinutes > startTimeMinutes || triggerTimeMinutes < stopTimeMinutes)) { doThat = Boolean(true); whatsup = "range spans midnight"; } // // Out of range... // if (doThat == false) {
AndroidMessages.sendAMessage.skip("Event happened outside time range (" + whatsup +") - time of trigger was "+Meta.triggerTime.format('LT')+", but start time to allow the action is "+ startTime.format('LT') + " and stop time is "+ stopTime.format('LT') + " Debug info: minutes are "+triggerTimeMinutes + " " + startTimeMinutes + " " + stopTimeMinutes); } // // The following code can be uncommented for debugging. It writes // an entry to the activity log instead of performing the // action. // // else // { // IfNotifications.sendNotification.setMessage("Action can happen (" + whatsup +") - time of trigger was "+Meta.triggerTime.format('LT')+", start time is "+ startTime.format('LT') + ", and stop time is "+ stopTime.format('LT') + ". Debug info: Minutes are trigger="+triggerTimeMinutes + ", start=" + startTimeMinutes + ", and stop=" + stopTimeMinutes); // } // }
fonte
Outra maneira de conseguir isso, sem recorrer à criação de um applet manual, é usando o Stringify.com como intermediário.
Permite incluir um nó "apenas se" em seus fluxos (fluxo Stringify = receita IFTTT). Se você tiver sorte, o Stringify já suporta o que deseja acionar, mas há apenas algumas "coisas" que eles suportam - em comparação com a infinidade no IFTTT.
Você pode definir receitas de "entrada" no IFTTT que acionarão um acionador do Stringify e uma receita de "saída" que será acionada a partir de uma ação do Stringify.
Por exemplo:
fonte