Repository navigation
Customer phone approvals for native Dify Human Input workflows #42319
Replies: 1 comment 2 replies
|
Keeping the business effect behind the permit-protected callback makes the native-form boundary clear. I read In Mission’s reference workflow, a provider commit followed by a lost response is recovered through a separate provider lookup and receipt readback. Testing that exposed a race: an older worker’s eventual error could overwrite a newer worker’s verified completion. We fixed both state and receipt writes and published the reproduction and recovery checks. That is a local synthetic proof, not a Dify or Pushary integration. Would you be interested in a small side-by-side trial using your SQLite order example: terminate after order commit but before returning the result, then restart and compare the order count and reported outcome? I can help prepare the checkpoint mapping. No live payment, shipment or phone service is needed for that comparison; your permit mechanism stays in place. |
Uh oh!
There was an error while loading. Please reload this page.
Hi, I’m Aadil from Pushary. We built a small application-side example for Dify’s native Human Input API: pause an order workflow, request the customer’s decision on their enrolled phone, and resume the same Dify run before executing a protected backend callback.
Runnable example, importable DSL, and checks
The important boundary is that a native Dify form submission is not itself proof of the intended customer’s approval. The example keeps business effects out of the Dify graph. Pushary’s existing Python SDK binds the customer, tenant, run, workflow version, form and exact order parameters to a one-use execution permit. The callback consumes that permit, submits the native form, verifies the resumed run’s output, then writes a local SQLite test order. It never charges or ships anything.
The worker exits while approval is pending; a new process resumes from saved state. Denials, expiry, changed parameters, competing native submitters and uncertain responses do not automatically execute or retry the business effect.
Validation: Dify Cloud import/publication, Studio pause → approve → resume, and an authenticated Service API pause/form check passed. Automated checks exercise real Graphon 0.7.0 snapshots and the published Pushary SDK with simulated hosted services, including duplicate workers and crash/lost-response cases. Phone notification receipt was confirmed, but the complete live phone-answer → API-resume path was not exercised; the README states this limitation. Temporary test keys were revoked.
This is an independently maintained example, not a Dify Marketplace plugin or official integration. The guide includes its trust assumptions and recovery limits. Feedback on the Human Input API usage and recovery boundary would be welcome.
All reactions