{"id":13715838,"url":"https://github.com/andyngo/conversable-for-scriptable","last_synced_at":"2025-05-07T05:31:40.420Z","repository":{"id":56020276,"uuid":"301962404","full_name":"andyngo/conversable-for-scriptable","owner":"andyngo","description":"Conversable is a simple contacts widget for Scriptable.","archived":false,"fork":false,"pushed_at":"2025-02-11T03:07:38.000Z","size":1173,"stargazers_count":194,"open_issues_count":6,"forks_count":39,"subscribers_count":37,"default_branch":"main","last_synced_at":"2025-05-07T00:56:39.996Z","etag":null,"topics":["ios","scriptable","widget"],"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/andyngo.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":"2020-10-07T07:44:01.000Z","updated_at":"2025-04-29T15:25:31.000Z","dependencies_parsed_at":"2022-08-15T11:31:26.880Z","dependency_job_id":null,"html_url":"https://github.com/andyngo/conversable-for-scriptable","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyngo%2Fconversable-for-scriptable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyngo%2Fconversable-for-scriptable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyngo%2Fconversable-for-scriptable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyngo%2Fconversable-for-scriptable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andyngo","download_url":"https://codeload.github.com/andyngo/conversable-for-scriptable/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252823001,"owners_count":21809700,"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","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":["ios","scriptable","widget"],"created_at":"2024-08-03T00:01:04.097Z","updated_at":"2025-05-07T05:31:39.745Z","avatar_url":"https://github.com/andyngo.png","language":"JavaScript","readme":"# Conversable for Scriptable\n\n![Cover image for Conversable](https://github.com/andyngo/conversable-for-scriptable/blob/main/conversable.png)\n\nNotes:\n\n1. This script requires Scriptable version 1.5.1 as it relies on a few newly added APIs such as `.addStack()` and `.url()`.\n\n2. An alternate version of this widget can be found [here](https://github.com/andyngo/conversable-plus-for-scriptable). The alt version (Conversable+) supports showing a list of actions when you tap on a contact. Consider using the alt version if you prefer having multiple actions per contact.\n\n---\n\n## What is this?\n\nConversable is a simple contacts widget for Scriptable. With Conversable, you can quickly\\*:\n\n1. Open an iMessage conversation for a contact\n2. Start a Facetime call with a contact\n3. Start a Facetime Audio call with a contact\n4. Make a cellular call to your contact\n5. Open a WhatsApp conversation for a contact\n\n\\*Caveat: The standard limitation with iOS 14 applies here: any URLs opened through a widget will require its host app to launch first before the URL can be opened.\n\n## Instructions\n\n1. Download and extract the content of this repository into the Scriptable folder located in your iCloud Drive.\n\nYour Scriptable folder structure should look like this:\n\n```\niCloud Drive/\n├─ Scriptable/\n│  ├─ Conversable.js\n│  ├─ Conversable/\n│  │  ├─ 1.png\n│  │  ├─ 2.png\n│  │  ├─ 3.png\n│  │  ├─ 4.png\n│  │  ├─ icons/\n\n```\n\n2. Launch Scriptable and make sure that Conversable is listed in the Scripts view.\n\n3. Run the script and you should see a preview of the Medium-sized widget with placeholder contacts if everything is set up correctly.\n\n4. To customize the contacts, open Conversable.js in the Scriptable editor and modify the `contacts_list` array. For example, change:\n\n```\n// default config\nconst contact_list = [\n  {\n    name: \"Placeholder\",\n    phone: \"+1234567890\",\n    type: \"sms\",\n    photo: \"1.png\"\n  },\n  // the rest of the array goes here\n]\n```\n\nto something like this of your own:\n\n```\nconst contact_list = [\n  {\n    name: \"John Doe\", // the name of the contact\n    phone: \"+0123456789\", // enter your contact's phone no, with country-code if necessary\n    type: \"sms\", // the type of communication method that you prefer. see supported services below.\n    photo: \"john.png\" // the photo of the contact. the image file goes inside the Conversable folder where 1.png, 2.png, etc resides.\n  },\n  // the rest of the array goes here\n]\n```\n\n5. Repeat the steps above for up to 4 contacts. Conversable currently supports showing up to 4 contacts within a row. Feel free to tweak the code if you need to add more contacts to a row.\n\n6. Once you've added your own contacts, run the script and verify that everything is working correctly.\n\n7. Return to your home screen and add a Medium Scriptable widget.\n\n8. Edit the Scriptable widget and choose Conversable as the Script. Next, set \"When Interacting\" to \"Run Script\" and you should be all set and ready to go.\n\n---\n\n## Settings\n\nConversable supports several simple configurations as of version 1.1.\n\n```\nconst SETTINGS = {\n  BG_COLOR: \"#151515\",\n  BG_IMAGE: {\n    SHOW_BG: false,\n    IMAGE_PATH: \"bg.png\",\n  },\n  BG_OVERLAY: {\n    SHOW_OVERLAY: false,\n    OVERLAY_COLOR: \"#111111\",\n    OPACITY: 0.5,\n  },\n  PADDING: 8,\n  TITLE_FONT_SIZE: 18,\n  PHOTO_SIZE: 60,\n  NAME_FONT_SIZE: 11,\n  RANDOMIZE_CONTACTS: false,\n  NO_OF_CONTACTS_TO_SHOW: 4,\n};\n```\n\n| Settings                   | Types                           |\n| -------------------------- | ------------------------------- |\n| `BG_COLOR`                 | Hex Value `string`              |\n| `BG_IMAGE.SHOW_BG`         | Boolean `true` or `false`       |\n| `BG_IMAGE.IMAGE_PATH`      | BG image filename/path `string` |\n| `BG_OVERLAY.SHOW_OVERLAY`  | Boolean `true` or `false`       |\n| `BG_OVERLAY.OVERLAY_COLOR` | Hex Value `string`              |\n| `BG_OVERLAY.OPACITY`       | Any value from 0 to 1 `float`   |\n| `PADDING`                  | 8 (Default) `number`            |\n| `TITLE_FONT_SIZE`          | 18 (Default) `number`           |\n| `PHOTO_SIZE`               | 60 (Default) `number`           |\n| `NAME_FONT_SIZE`           | 11 (Default) `number`           |\n| `RANDOMIZE_CONTACTS`       | Boolean `true` or `false`       |\n| `NO_OF_CONTACTS_TO_SHOW`   | 4 (Default) `number`            |\n\nFeel free to tweak these settings as you see fit.\n\n---\n\n## Supported Services (Apps)\n\n| Services (Apps) | Type             | Accepts           |\n| --------------- | ---------------- | ----------------- |\n| iMessage/SMS    | \"sms\"            | phone             |\n| Mail            | \"mail\"           | mail              |\n| Facetime        | \"facetime\"       | phone             |\n| Facetime Audio  | \"facetime-audio\" | phone             |\n| Telephone       | \"call\"           | phone             |\n| Telegram        | \"telegram\"       | telegram_username |\n| Twitter         | \"twitter\"        | twitter_id        |\n| WhatsApp        | \"whatsapp\"       | phone             |\n\nTwitter example:\n\n```\n{\n  name: \"Andy\",\n  type: \"twitter\",\n  twitter_id: \"11009532\", // there are tools out there that allow you to get this\n  photo: \"1.png\"\n}\n```\n\nI've also included several more icons in the `/icons` folder that might be useful if you figure out a way to add more services to the list.\n\n---\n\n## Known Issues \u0026 Troubleshooting\n\n### My icons and contact names are missing.\n\n- Sometimes the images would fail to download and would cause the entire row of icon and contact name to not show up. You can try to troubleshoot this issue by:\n\n1. Checking the `Conversable` folder in your iCloud Drive and making sure that all the images are uploaded correctly. If your files show 'Waiting...', try toggling Airplane Mode on and off to restart the upload.\n\n2. Renaming the `Conversable` to something else ie: `Conversable1` or something else. Remember to also change the folder path in `Conversable.js` to reflect the newly renamed folder:\n\n```\nasync function getImg(image) {\n  let folder = \"/Conversable1\"\n  // the rest of the code\n```\n\n3. If none of the steps above worked for you, please reach out on [Twitter](https://twitter.com/andyngo) and I'll see what I can do.\n\n### The widget is not rendering correctly in the Small/Large size.\n\n- Right now the widget only supports the Medium widget size. I'll consider adapting this to support the Small and Large sizes if I get enough requests for it.\n\n---\n\n## About this project\n\nThis script is authored by [@andyngo](https://twitter.com/andyngo) (me) as a fun little side project to try out the scripting capabilities of Scriptable.\n\nIf you like this project, consider viewing https://extendedicons.com for custom-made icons for your Shortcuts, or [buy me a coffee](https://www.buymeacoffee.com/andyngo). You can also follow me on [Twitter](https://twitter.com/andyngo) for updates.\n","funding_links":["https://www.buymeacoffee.com/andyngo"],"categories":["Social"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyngo%2Fconversable-for-scriptable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandyngo%2Fconversable-for-scriptable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyngo%2Fconversable-for-scriptable/lists"}