{"id":13991983,"url":"https://github.com/kamikat/tttfi","last_synced_at":"2025-07-22T15:30:47.960Z","repository":{"id":57382025,"uuid":"97493271","full_name":"kamikat/tttfi","owner":"kamikat","description":"Middleware for IFTTT.","archived":true,"fork":false,"pushed_at":"2017-07-18T01:23:16.000Z","size":8,"stargazers_count":349,"open_issues_count":0,"forks_count":15,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-24T14:35:16.610Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kamikat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-17T15:44:12.000Z","updated_at":"2024-11-04T09:13:45.000Z","dependencies_parsed_at":"2022-09-26T16:50:11.614Z","dependency_job_id":null,"html_url":"https://github.com/kamikat/tttfi","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kamikat/tttfi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamikat%2Ftttfi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamikat%2Ftttfi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamikat%2Ftttfi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamikat%2Ftttfi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kamikat","download_url":"https://codeload.github.com/kamikat/tttfi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamikat%2Ftttfi/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266520568,"owners_count":23942287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-09T14:01:43.360Z","updated_at":"2025-07-22T15:30:47.586Z","avatar_url":"https://github.com/kamikat.png","language":"JavaScript","readme":"# TTTFI\n\n[![npm](https://img.shields.io/npm/v/tttfi.svg?maxAge=86400)](https://www.npmjs.com/package/tttfi)\n\nMiddleware for IFTTT.\n\n## Usage\n\nTTTFI picks up data from IFTTT webhook, pass data through scripts and send output of script back to IFTTT.\n\n**STEP1** Prepare scripts:\n\nLet's write a simple hello world in shell (you can find that in samples folder).\n\n```sh\n#!/bin/sh\n\n# Read body from stdin\nread NAME\n\n# Print response to IFTTT\ncat \u003c\u003c EOF\n{\"value1\": \"Hello, $NAME!\"}\nEOF\n```\n\n**STEP2** Run docker image:\n\n```\ndocker run -e API_KEY=\u003cyour-ifttt-key\u003e \\\n           -e SECRET_TOKEN=\u003csecret-token\u003e \\\n           -v `pwd`/samples:/opt/bin \\\n           -p 3001:3001 \\\n           --name tttfi \\\n           kamikat/tttfi\n```\n\nNOTE: Pick up a random string as your `SECRET_TOKEN`.\n\n**STEP3** Setup trigger:\n\n1. Create a webhook trigger \u003chttps://ifttt.com/create/if-maker_webhooks?sid=1\u003e\n2. Set **Event Name** to `hello` (name of the script)\n3. Choose any action service\n4. Click **Add ingredient** and select `Value1` on any field of the service that supports it\n\nTest your configuration by sending some data using curl\n\n```\necho 'world' | curl -XPOST -d- https://your-domain.com/hello/secret/\u003csecret-token\u003e\n```\n\n**STEP4** Setup action:\n\n1. Create trigger with any service \u003chttps://ifttt.com/create\u003e (Telegram for example)\n2. Choose **Webhooks** service to create an action\n3. Set the url (for example `https://your-domain.com/hello/secret/\u003csecret-token\u003e`)\n4. Set **Method** to `POST` and **Content Type** to `text/plain` (the `hello` event requires simple text)\n5. Add any ingredient to **body**\n\n## Scripting with Python/Perl/Go...\n\nScripts written in python or other platform can failed to start because they're not installed in container.\n\nAdd required package after start the container:\n\n```\ndocker exec tttfi apk --no-cache add \u003cpackage-name\u003e\n```\n\nOr run tttfi natively (see next section)\n\n## Native server\n\nTTTFI can run natively on *nix with ES6 compatible Node.js.\n\n```\nnpm install -g tttfi\n```\n\nRun TTTFI:\n\n```\nPATH=\u003cpath-to-scripts\u003e:$PATH API_KEY=\u003cyour-ifttt-key\u003e SECRET_TOKEN=\u003csecret-token\u003e tttfi\n```\n\nBe careful that it executes ANYTHING in your `$PATH` with correct secret token.\n\n## License\n\n(The MIT License)\n","funding_links":[],"categories":["📦 Legacy \u0026 Inactive Projects","JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamikat%2Ftttfi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkamikat%2Ftttfi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamikat%2Ftttfi/lists"}