{"id":15474902,"url":"https://github.com/maskentir/qontalk","last_synced_at":"2026-05-19T14:07:39.353Z","repository":{"id":188567275,"uuid":"678989204","full_name":"maskentir/qontalk","owner":"maskentir","description":":unicorn: The Qontalk package is a powerful fusion of the Qontak and FSM packages, creating a unified and comprehensive SDK that empowers you to seamlessly manage Qontak messaging and Finite State Machine (FSM) operations within your Go applications.","archived":false,"fork":false,"pushed_at":"2024-01-08T06:42:31.000Z","size":94,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-12T21:51:29.690Z","etag":null,"topics":["chatbot","fsm","go","golang","qontak","qontak-sdk","whatsapp","whatsapp-api","whatsapp-api-go","whatsapp-bot"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/github.com/maskentir/qontalk","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maskentir.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-15T21:20:36.000Z","updated_at":"2025-04-12T23:32:55.000Z","dependencies_parsed_at":"2024-12-07T23:40:31.517Z","dependency_job_id":"4e755daf-8317-42e3-9448-92092b2bdd7e","html_url":"https://github.com/maskentir/qontalk","commit_stats":{"total_commits":37,"total_committers":1,"mean_commits":37.0,"dds":0.0,"last_synced_commit":"f88664fe73e49d6d20ce996f0545242947de24d5"},"previous_names":["maskentir/qontalk"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/maskentir/qontalk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maskentir%2Fqontalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maskentir%2Fqontalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maskentir%2Fqontalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maskentir%2Fqontalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maskentir","download_url":"https://codeload.github.com/maskentir/qontalk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maskentir%2Fqontalk/sbom","scorecard":{"id":622801,"data":{"date":"2025-08-11","repo":{"name":"github.com/maskentir/qontalk","commit":"f88664fe73e49d6d20ce996f0545242947de24d5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/commit-check.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing shell code: not a valid test operator: .+: .github/workflows/commit-check.yml:18","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commit-check.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/maskentir/qontalk/commit-check.yml/main?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T05:33:41.482Z","repository_id":188567275,"created_at":"2025-08-21T05:33:41.483Z","updated_at":"2025-08-21T05:33:41.483Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33219440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T07:54:09.561Z","status":"ssl_error","status_checked_at":"2026-05-19T07:54:08.508Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["chatbot","fsm","go","golang","qontak","qontak-sdk","whatsapp","whatsapp-api","whatsapp-api-go","whatsapp-bot"],"created_at":"2024-10-02T03:05:39.464Z","updated_at":"2026-05-19T14:07:39.322Z","avatar_url":"https://github.com/maskentir.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :unicorn: Qontalk: A Go SDK for Qontak\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![Go version](https://img.shields.io/badge/go-1.16%2B-blue.svg)\n[![Go Reference](https://pkg.go.dev/badge/github.com/maskentir/qontalk.svg)](https://pkg.go.dev/github.com/maskentir/qontalk)\n\nQontalk is a Go SDK that provides provides a unified Go SDK for seamless interaction with both the Qontak and FSM APIs, allowing you to interact with the Qontak platform. This SDK includes functionalities to authenticate, send message interactions, send interactive messages, send WhatsApp messages, send Direct WhatsApp Broadcasts, and retrieve WhatsApp Templates.\n\nFor more detailed information on using the Qontak Go SDK, check out the [GODOC.md](GODOC.md) file.\n\n### Overview :bulb:\n\nThe qontalk package combines the functionality of the Qontak and FSM packages to provide a single, comprehensive SDK for both Qontak messaging and Finite State Machine \\(FSM\\) operations. This package allows you to effortlessly work with Qontak for messaging while simultaneously building, managing, and executing FSMs within your applications.\n\n### Qontak Integration :cactus:\n\nThe Qontak integration within qontalk enables you to:\n\n- Authenticate with Qontak's services using various authentication methods.\n- Send messages to customers and agents, including text, images, and interactive messages.\n- Manage WhatsApp templates and send WhatsApp messages.\n- Perform Direct WhatsApp Broadcasts with customization options.\n\nYou can utilize these features to enhance your messaging capabilities and communication with customers and agents through Qontak's platform.\n\n### Finite State Machine \\(FSM\\) Integration :rocket:\n\nThe FSM integration allows you to create, manage, and execute Finite State Machines within your application. You can define custom states, events, transitions, and callbacks to control the flow of your application based on specific conditions.\n\nKey features of the FSM integration include:\n\n- Creating FSM instances with custom initial states and transitions.\n- Sending events to trigger state transitions.\n- Managing FSM lifecycle, including starting and stopping FSM execution.\n- Defining global callbacks to handle state transitions and events.\n\nThis FSM integration empowers you to build complex, stateful applications with ease.\n\n## Installation\n\nTo install the Qontalk SDK, you can use `go get`:\n\n```sh\ngo get github.com/maskentir/qontalk\n```\n\n## Documentation\n\nYou can find the full documentation for the Qontalk SDK [here](https://pkg.go.dev/github.com/maskentir/qontalk).\n\n## Usage\n\nHere is a simple example of how to use the Qontalk SDK:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\n\t\"github.com/maskentir/qontalk\"\n\t\"github.com/maskentir/qontalk/fsm\"\n)\n\nfunc main() {\n\t// Create a QontalkSDK instance\n\tsdk := qontalk.NewQontalkSDKBuilder().\n\t\tWithClientCredentials(\"your-username\", \"your-password\", \"your-grant-type\", \"your-client-id\", \"your-client-secret\").\n\t\tBuild()\n\n\t// Authenticate with Qontak\n\tif err := sdk.Authenticate(); err != nil {\n\t\tfmt.Println(\"Authentication failed:\", err)\n\t\treturn\n\t}\n\n\t// Use Qontak features, send messages, etc.\n\n\t// Create a new chatbot instance\n\tbot := fsm.NewBot(\"MyChatbot\")\n\n\t// Define states and transitions\n\ttransitions := []fsm.Transition{\n\t\t{Event: \"start\", Target: \"initial\"},\n\t\t{Event: \"continue\", Target: \"ongoing\"},\n\t}\n\n\tbot.AddState(\"initial\", \"Welcome to the chatbot!\", transitions)\n\n\t// Define rules and actions\n\trulePattern := \"hello\"\n\tregexPattern := fmt.Sprintf(\"(?i)%s\", regexp.QuoteMeta(rulePattern))\n\trule := fsm.Rule{\n\t\tName:    \"HelloRule\",\n\t\tPattern: regexp.MustCompile(regexPattern),\n\t\tRespond: \"Hello! How can I assist you?\",\n\t}\n\n\tbot.AddRuleToState(\"initial\", rule.Name, regexPattern, rule.Respond, nil, nil)\n\n\t// Process user messages\n\tresponse, err := bot.ProcessMessage(\"user123\", \"hello\")\n\tif err != nil {\n\t\tfmt.Println(\"Error:\", err)\n\t\treturn\n\t}\n\n\tfmt.Println(\"Bot Response:\", response)\n}\n\n```\n\n## Contributing\n\nPlease read our [Contribution Guidelines](CONTRIBUTE.md) before submitting a pull request.\n\n## Code of Conduct\n\nPlease follow our [Code of Conduct](CODE_OF_CONDUCT.md) when participating in this project.\n\n## Issue and Pull Request Templates\n\nBefore creating an issue or pull request, review our [Issue Template](ISSUE_TEMPLATE.md) and [Pull Request Template](PULL_REQUEST_TEMPLATE.md).\n\n## License\n\nThis library is released under the MIT [License](LICENSE).\n\n## Contact\n\nIf you have any questions or feedback, please contact our support team at harunwols@gmail.com.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaskentir%2Fqontalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaskentir%2Fqontalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaskentir%2Fqontalk/lists"}